Files
oracle-of-secrets/Menu/menu_draw_items.asm
2022-06-19 16:25:39 -04:00

362 lines
6.4 KiB
NASM

;===============================================================================
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
;===============================================================================
DrawQuestIcons:
LDX.w #$10
.loop
LDA.w Menu_QuestIcons, X
STA.w $1364, X
LDA.w Menu_QuestIcons+$10, X
STA.w $13A4, X
LDA.w Menu_QuestIcons+$20, X
STA.w $13E4, X
LDA.w Menu_QuestIcons+$30, X
STA.w $1424, X
LDA.w Menu_QuestIcons+$40, X
STA.w $1464, X
LDA.w Menu_QuestIcons+$50, X
STA.w $14A4, X
LDA.w Menu_QuestIcons+$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:
; Set up the bank of our indirect address
SEP #$30
LDA.b #$7E : STA.b $0A
REP #$30
LDA.w #$7EF340
LDX.w #menu_offset(7,2)
LDY.w #BowsGFX
JSR DrawMenuItem
LDA.w #$7EF341
LDX.w #menu_offset(7,5)
LDY.w #BoomsGFX
JSR DrawMenuItem
LDA.w #$7EF342
LDX.w #menu_offset(7,8)
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,11)
LDY.w #BombsGFX
JSR DrawMenuItem
.no_bomb
LDA.w #$7EF348
LDX.w #menu_offset(7,14)
LDY.w #DekuMaskGFX
JSR DrawMenuItem
LDA.w #$7EF35C
LDX.w #menu_offset(7,17)
LDY.w #BottlesGFX
JSR DrawMenuItem
LDA.w #$7EF345
LDX.w #menu_offset(10,2)
LDY.w #Fire_rodGFX
JSR DrawMenuItem
LDA.w #$7EF346
LDX.w #menu_offset(10,5)
LDY.w #Ice_rodGFX
JSR DrawMenuItem
LDA.l $7EF34A
CMP.w #$00 : BEQ .no_lamp
DEC
.no_lamp
STA.w MenuItemValueSpoof
LDA.w #MenuItemValueSpoof
LDX.w #menu_offset(10,8)
LDY.w #LampGFX
JSR DrawMenuItem
LDA.w #$7EF34B
LDX.w #menu_offset(10,11)
LDY.w #HammerGFX
JSR DrawMenuItem
LDA.w #$7EF347
LDX.w #menu_offset(10,14)
LDY.w #GoronMaskGFX
JSR DrawMenuItem
LDA.w #$7EF35D
LDX.w #menu_offset(10,17)
LDY.w #BottlesGFX
JSR DrawMenuItem
LDA.w #$7EF350
LDX.w #menu_offset(13,2)
LDY.w #SomariaGFX
JSR DrawMenuItem
LDA.w #$7EF351
LDX.w #menu_offset(13,5)
LDY.w #ByrnaGFX
JSR DrawMenuItem
; LDA.w #$7EF34C
; LDX.w #menu_offset(13,8)
; LDY.w #ShovelGFX
; JSR DrawMenuItem
LDA.w #$7EF34E
LDX.w #menu_offset(13,8)
LDY.w #BookGFX
JSR DrawMenuItem
LDA.w #$7EF34D
LDX.w #menu_offset(13,11)
LDY.w #JumpFeatherGFX
JSR DrawMenuItem
LDA.w #$7EF349
LDX.w #menu_offset(13,14)
LDY.w #BunnyHoodGFX
JSR DrawMenuItem
LDA.w #$7EF35E
LDX.w #menu_offset(13,17)
LDY.w #BottlesGFX
JSR DrawMenuItem
LDA.w #$7EF34C ; ocarina
LDX.w #menu_offset(16,2)
LDY.w #ShovelGFX
JSR DrawMenuItem
LDA.w #$7EF353
LDX.w #menu_offset(16,5)
LDY.w #MirrorGFX
JSR DrawMenuItem
LDA.w #$7EF34F
LDX.w #menu_offset(16,8)
LDY.w #ShovelGFX
JSR DrawMenuItem
LDA.w #$7EF344
LDX.w #menu_offset(16,11)
LDY.w #PowderGFX
JSR DrawMenuItem
LDA.w #$7EF352
LDX.w #menu_offset(16,14)
LDY.w #StoneMaskGFX
JSR DrawMenuItem
LDA.w #$7EF35F
LDX.w #menu_offset(16,17)
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