399 lines
7.1 KiB
NASM
399 lines
7.1 KiB
NASM
; =============================================================================
|
|
; Tilemap Menu background
|
|
|
|
Menu_DrawBackground:
|
|
{
|
|
REP #$30
|
|
LDX.w #$FE ; $1700-17FF
|
|
|
|
.loop
|
|
LDA.w menu_frame, X
|
|
STA.w $1000, X
|
|
LDA.w menu_frame+$100, X
|
|
STA.w $1100, X
|
|
LDA.w menu_frame+$200, X
|
|
STA.w $1200, X
|
|
LDA.w menu_frame+$300, X
|
|
STA.w $1300, X
|
|
LDA.w menu_frame+$400, X
|
|
STA.w $1400, X
|
|
LDA.w menu_frame+$500, X
|
|
STA.w $1500, X
|
|
LDA.w menu_frame+$600, X
|
|
STA.w $1600, X
|
|
LDA.w menu_frame+$700, X
|
|
STA.w $1700, X
|
|
|
|
DEX : DEX
|
|
BPL .loop
|
|
|
|
RTS
|
|
}
|
|
|
|
; =============================================================================
|
|
; Menu Item Draw Routine
|
|
; Credit to Kan
|
|
|
|
DrawMenuItem:
|
|
STA.b $08
|
|
STY.b $00
|
|
|
|
LDA.b [$08]
|
|
AND.w #$00FF
|
|
|
|
BNE .not_zero
|
|
|
|
LDY.w #NothingGFX
|
|
BRA .draw
|
|
|
|
.not_zero
|
|
DEC
|
|
|
|
ASL : ASL : ASL
|
|
ADC.b $00
|
|
TAY
|
|
|
|
.draw
|
|
LDA.w $0000,Y : STA.w $1108,X
|
|
LDA.w $0002,Y : STA.w $110A,X
|
|
LDA.w $0004,Y : STA.w $1148,X
|
|
LDA.w $0006,Y : STA.w $114A,X
|
|
|
|
RTS
|
|
|
|
; =============================================================================
|
|
; Quest Icons Tilemap Draw Routine
|
|
|
|
DrawQuestIcons:
|
|
LDX.w #$10
|
|
|
|
.loop
|
|
LDA.w quest_icons, X
|
|
STA.w $1364, X
|
|
LDA.w quest_icons+$10, X
|
|
STA.w $13A4, X
|
|
LDA.w quest_icons+$20, X
|
|
STA.w $13E4, X
|
|
LDA.w quest_icons+$30, X
|
|
STA.w $1424, X
|
|
LDA.w quest_icons+$40, X
|
|
STA.w $1464, X
|
|
LDA.w quest_icons+$50, X
|
|
STA.w $14A4, X
|
|
LDA.w quest_icons+$60, X
|
|
STA.w $14E4, X
|
|
DEX : DEX : BPL .loop
|
|
|
|
LDA.w #$20F5 : STA.w $13B4 : STA.w $13F4 : STA.w $1474 : STA.w $14B4
|
|
|
|
RTS
|
|
|
|
; =============================================================================
|
|
|
|
DrawTriforceIcon:
|
|
LDA.l $7EF37A
|
|
LDX.w #$3534
|
|
LDY.w #$3544
|
|
|
|
LSR : BCC +
|
|
STX.w $1366 : INX : STX.w $1368 : DEX
|
|
STY.w $13A6 : INY : STY.w $13A8 : DEY
|
|
|
|
+ LSR : BCC +
|
|
STX.w $136A : INX : STX.w $136C : DEX
|
|
STY.w $13AA : INY : STY.w $13AC : DEY
|
|
|
|
+ LSR : BCC +
|
|
STX.w $136E : INX : STX.w $1370 : DEX
|
|
STY.w $13AE : INY : STY.w $13B0 : DEY
|
|
|
|
+ LSR : BCC +
|
|
STX.w $13E4 : INX : STX.w $13E6 : DEX
|
|
STY.w $1424 : INY : STY.w $1426 : DEY
|
|
|
|
+ LSR : BCC +
|
|
STX.w $13E8 : INX : STX.w $13EA : DEX
|
|
STY.w $1428 : INY : STY.w $142A : DEY
|
|
|
|
+ LSR : BCC +
|
|
STX.w $13EC : INX : STX.w $13EE : DEX
|
|
STY.w $142C : INY : STY.w $142E : DEY
|
|
|
|
+ LSR : BCC +
|
|
STX.w $13F0 : INX : STX.w $13F2 : DEX
|
|
STY.w $1430 : INY : STY.w $1432 : DEY
|
|
|
|
+
|
|
RTS
|
|
|
|
;===============================================================================
|
|
|
|
DrawPendantIcons:
|
|
LDA.l $7EF374
|
|
LSR : BCC +
|
|
LDX.w #$2502 : STX.w $14A4 : INX : STX.w $14A6
|
|
LDX.w #$2512 : STX.w $14E4 : INX : STX.w $14E6
|
|
|
|
+ LSR : BCC +
|
|
LDX.w #$3D00 : STX.w $14AA : INX : STX.w $14AC
|
|
LDX.w #$3D10 : STX.w $14EA : INX : STX.w $14EC
|
|
|
|
+ LSR : BCC +
|
|
LDX.w #$2D06 : STX.w $14B0 : INX : STX.w $14B2
|
|
LDX.w #$2D16 : STX.w $14F0 : INX : STX.w $14F2
|
|
|
|
+ RTS
|
|
|
|
;===============================================================================
|
|
|
|
; V H O P P P T T T T T T T T T T <- tile format
|
|
; V = Vertical Flip
|
|
; H = Horizontal Flip
|
|
; O = Priority
|
|
; P = Palette 0 to 7
|
|
; T = Tile (which is normally called C for Character) 0 to 1023
|
|
; E000 is T = 0
|
|
; E100 would be T = 16
|
|
|
|
DrawHeartPieces:
|
|
LDA.l $7EF36B
|
|
AND.w #$00FF
|
|
CMP.w #3 : BEQ .top_right
|
|
CMP.w #1 : BEQ .top_left
|
|
BCS .bottom_left
|
|
RTS
|
|
|
|
.top_right
|
|
LDX.w #$64AD : STX.w $14A0
|
|
.bottom_left
|
|
LDX.w #$24AE : STX.w $14DE
|
|
.top_left
|
|
LDX.w #$24AD : STX.w $149E
|
|
RTS
|
|
|
|
;===============================================================================
|
|
|
|
DrawMusicNotes:
|
|
LDA.w #$02
|
|
STA.w MusicNoteValue
|
|
LDA.w #MusicNoteValue
|
|
LDX.w #menu_offset(17,14)
|
|
LDY.w #QuarterNoteGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$03
|
|
STA.w MusicNoteValue
|
|
LDA.w #MusicNoteValue
|
|
LDX.w #menu_offset(17,17)
|
|
LDY.w #QuarterNoteGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$04
|
|
STA.w MusicNoteValue
|
|
LDA.w #MusicNoteValue
|
|
LDX.w #menu_offset(17,20)
|
|
LDY.w #QuarterNoteGFX
|
|
JSR DrawMenuItem
|
|
|
|
RTS
|
|
|
|
;===============================================================================
|
|
|
|
DrawYItems:
|
|
{
|
|
SEP #$30
|
|
LDA.b #$7E : STA.b $0A ; Set up the bank of our indirect address
|
|
REP #$30
|
|
|
|
LDA.w #$7EF340
|
|
LDX.w #menu_offset(7,3)
|
|
LDY.w #BowsGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF341
|
|
LDX.w #menu_offset(7,6)
|
|
LDY.w #BoomsGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF342
|
|
LDX.w #menu_offset(7,9)
|
|
LDY.w #HookGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.l $7EF343
|
|
CMP.w #$00 : BEQ .no_bomb
|
|
LDA.w #$0001
|
|
STA.w MenuItemValueSpoof
|
|
LDA.w #MenuItemValueSpoof
|
|
LDX.w #menu_offset(7,13)
|
|
LDY.w #BombsGFX
|
|
JSR DrawMenuItem
|
|
.no_bomb
|
|
|
|
LDA.w #$7EF348
|
|
LDX.w #menu_offset(7,16)
|
|
LDY.w #DekuMaskGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF35C
|
|
LDX.w #menu_offset(7,19)
|
|
LDY.w #BottlesGFX
|
|
JSR DrawMenuItem
|
|
|
|
;; next row
|
|
|
|
LDA.w #$7EF34B
|
|
LDX.w #menu_offset(10,3)
|
|
LDY.w #HammerGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF34A
|
|
LDX.w #menu_offset(10,6)
|
|
LDY.w #LampGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF345
|
|
LDX.w #menu_offset(10,9)
|
|
LDY.w #Fire_rodGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF346
|
|
LDX.w #menu_offset(10,13)
|
|
LDY.w #Ice_rodGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF347
|
|
LDX.w #menu_offset(10,16)
|
|
LDY.w #GoronMaskGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF35D
|
|
LDX.w #menu_offset(10,19)
|
|
LDY.w #BottlesGFX
|
|
JSR DrawMenuItem
|
|
|
|
;; next row
|
|
|
|
LDA.w #$7EF34F ; 7EF34C
|
|
LDX.w #menu_offset(13,3)
|
|
LDY.w #ShovelGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF34D
|
|
LDX.w #menu_offset(13,6)
|
|
LDY.w #JumpFeatherGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF350
|
|
LDX.w #menu_offset(13,9)
|
|
LDY.w #SomariaGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF351
|
|
LDX.w #menu_offset(13,13)
|
|
LDY.w #ByrnaGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF349
|
|
LDX.w #menu_offset(13,16)
|
|
LDY.w #BunnyHoodGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF35E
|
|
LDX.w #menu_offset(13,19)
|
|
LDY.w #BottlesGFX
|
|
JSR DrawMenuItem
|
|
|
|
;; next row
|
|
|
|
LDA.w #$7EF344
|
|
LDX.w #menu_offset(16,3)
|
|
LDY.w #PowderGFX
|
|
JSR DrawMenuItem
|
|
|
|
;LDA.w #$7EF34E
|
|
LDA.l $7EF34E
|
|
CMP.w #$00 : BEQ .no_book
|
|
LDA.w #$01
|
|
STA.w ShortSpoof
|
|
LDA.w #ShortSpoof
|
|
LDX.w #menu_offset(13,6)
|
|
LDY.w #BookGFX
|
|
JSR DrawMenuItem
|
|
.no_book
|
|
|
|
; LDA.w #$7EF34C ; ocarina
|
|
LDA.l $7EF34C
|
|
CMP.w #$00 : BEQ .no_flute
|
|
LDA.w #$01
|
|
STA.w ShortSpoof
|
|
LDA.w #ShortSpoof
|
|
LDX.w #menu_offset(16,9)
|
|
LDY.w #OcarinaGFX
|
|
JSR DrawMenuItem
|
|
.no_flute
|
|
|
|
LDA.w #$7EF353
|
|
LDX.w #menu_offset(16,13)
|
|
LDY.w #MirrorGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF352
|
|
LDX.w #menu_offset(16,16)
|
|
LDY.w #StoneMaskGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF35F
|
|
LDX.w #menu_offset(16,19)
|
|
LDY.w #BottlesGFX
|
|
JSR DrawMenuItem
|
|
|
|
RTS
|
|
}
|
|
|
|
; =============================================================================
|
|
|
|
Menu_DrawQuestItems:
|
|
SEP #$30
|
|
LDA.b #$7E : STA.b $0A
|
|
REP #$30
|
|
|
|
LDA.w #$7EF359
|
|
LDX.w #menu_offset(14,2)
|
|
LDY.w #SwordGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF35A
|
|
LDX.w #menu_offset(14,5)
|
|
LDY.w #ShieldGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.l $7EF35B
|
|
INC
|
|
STA.w MenuItemValueSpoof
|
|
LDA.w #MenuItemValueSpoof
|
|
LDX.w #menu_offset(14,8)
|
|
LDY.w #TunicGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF354
|
|
LDX.w #menu_offset(17,2)
|
|
LDY.w #PowerGloveGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF355
|
|
LDX.w #menu_offset(17,5)
|
|
LDY.w #PegasusBootsGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF356
|
|
LDX.w #menu_offset(17,8)
|
|
LDY.w #FlippersGFX
|
|
JSR DrawMenuItem
|
|
|
|
LDA.w #$7EF357
|
|
LDX.w #menu_offset(17,11)
|
|
LDY.w #MoonPearlGFX
|
|
JSR DrawMenuItem
|
|
|
|
RTS |