boss kills

This commit is contained in:
spannerisms
2021-02-14 01:33:48 -05:00
parent c97475f422
commit d9946e8f2a
2 changed files with 228 additions and 165 deletions

View File

@@ -265,194 +265,256 @@ DrawMoonPearlInMenuLocation:
RTL
;--------------------------------------------------------------------------------
DrawHUDDungeonItems:
LDA.l HUDDungeonItems : BNE + : RTL : +
LDA.l HUDDungeonItems : BNE .continue
RTL
.dungeon_positions
dw 0 ; Hyrule Castle
dw 2 ; Agahnims Tower
dw 6 ; Eastern
dw 8 ; Desert
dw 10 ; Hera
dw 14 ; PoD
dw 16 ; Swamp
dw 18 ; Skull Woods
dw 20 ; Thieves Town
dw 22 ; Ice
dw 24 ; Mire
dw 26 ; Turtle Rock
dw 30 ; Ganon's Tower
.small_key_x_offset
dw $7EF37D-$7EF37D ; Hyrule Castle
dw $7EF380-$7EF37D ; Agahnims Tower
dw $7EF37E-$7EF37D ; Eastern
dw $7EF37F-$7EF37D ; Desert
dw $7EF386-$7EF37D ; Hera
dw $7EF382-$7EF37D ; PoD
dw $7EF381-$7EF37D ; Swamp
dw $7EF384-$7EF37D ; Skull Woods
dw $7EF387-$7EF37D ; Thieves Town
dw $7EF385-$7EF37D ; Ice
dw $7EF383-$7EF37D ; Mire
dw $7EF388-$7EF37D ; Turtle Rock
dw $7EF389-$7EF37D ; Ganon's Tower
.dungeon_bitmasks
dw $4000 ; Hyrule Castle
dw $0800 ; Agahnims Tower
dw $2000 ; Eastern
dw $1000 ; Desert
dw $0020 ; Hera
dw $0200 ; PoD
dw $0400 ; Swamp
dw $0080 ; Skull Woods
dw $0010 ; Thieves Town
dw $0040 ; Ice
dw $0100 ; Mire
dw $0008 ; Turtle Rock
dw $0004 ; Ganon's Tower
.boss_room_ids
dw $80*2 ; ; Hyrule Castle (BNC)
dw $20*2 ; ; Agahnim
dw $C8*2 ; ; Eastern
dw $33*2 ; ; Desert
dw $07*2 ; ; Hera
dw $5A*2 ; ; PoD
dw $06*2 ; ; Swamp
dw $29*2 ; ; Skull Woods
dw $AC*2 ; ; Thieves Town
dw $DE*2 ; ; Ice
dw $90*2 ; ; Mire
dw $A4*2 ; ; Turtle Rock
dw $0D*2 ; ; Ganon's Tower
.continue
PHP
REP #$30 ; set 16-bit accumulator & index registers
PHB
PHK
PLB
REP #$30
;-------------------------------------------------------------------------------
; dungeon names
LDA.w #$2D50 : STA $1646 ; sewers
LDA.w #$2D54 : STA $1648 ; Agahnims Tower
LDA.w #$2D50
LDA.w #$2D51 : STA $164C ; Eastern
LDA.w #$2D52 : STA $164E ; Desert
LDA.w #$2D53 : STA $1650 ; Hera
LDY.w #0
LDA.w #$2D55 : STA $1654 ; PoD
LDA.w #$2D56 : STA $1656 ; Swamp
LDA.w #$2D57 : STA $1658 ; Skull Woods
LDA.w #$2D58 : STA $165A ; Thieves Town
LDA.w #$2D59 : STA $165C ; Ice
LDA.w #$2D5A : STA $165E ; Mire
LDA.w #$2D5B : STA $1660 ; Turtle Rock
LDA.w #$2D5C : STA $1664 ; Ganon's Tower
.next_dungeon_name
LDX.w .dungeon_positions,Y
STA.w $1646,X
INC
INY : INY
CPY.w #26 : BCC .next_dungeon_name
; write black
LDX.w #$0000 ; Paint entire box black & draw empty pendants and crystals
-
LDA #$24F5 : STA $1686, X : STA $16C6, X
INX #2 : CPX.w #$0020 : BCC -
LDX.w #$001E
LDA.w #$24F5
LDA !HUD_FLAG : AND.w #$0020 : BEQ + : JMP +++ : +
LDA HUDDungeonItems : AND.w #$0001 : BNE + : JMP ++ : +
-- STA.w $1686,X
STA.w $16C6,X
STA.w $1706,X
DEX : DEX : BPL --
LDA.l !HUD_FLAG : AND.w #$0020 : BEQ + : JMP +++ : +
;-------------------------------------------------------------------------------
LDA HUDDungeonItems : AND.w #$0001 : BEQ .skip_small_keys
.draw_small_keys
LDA.w #$2810 : STA $1684 ; small keys icon
SEP #$20 ; set 8-bit accumulator
; Small Keys
LDA.b #$16 : !ADD $7EF37D : STA $1686 : LDA.b #$28 : ADC #$00 : sta.w $1686+1 ; Hyrule Castle
LDA.b #$16 : !ADD $7EF380 : STA $1688 : LDA.b #$28 : ADC #$00 : sta.w $1688+1 ; Agahnims Tower
LDA.b #$16 : !ADD $7EF37E : STA $168C : LDA.b #$28 : ADC #$00 : sta.w $168C+1 ; Eastern
LDA.b #$16 : !ADD $7EF37F : STA $168E : LDA.b #$28 : ADC #$00 : sta.w $168E+1 ; Desert
LDA.b #$16 : !ADD $7EF386 : STA $1690 : LDA.b #$28 : ADC #$00 : sta.w $1690+1 ; Hera
LDY.w #0
LDA.b #$16 : !ADD $7EF382 : STA $1694 : LDA.b #$28 : ADC #$00 : sta.w $1694+1 ; PoD
LDA.b #$16 : !ADD $7EF381 : STA $1696 : LDA.b #$28 : ADC #$00 : sta.w $1696+1 ; Swamp
LDA.b #$16 : !ADD $7EF384 : STA $1698 : LDA.b #$28 : ADC #$00 : sta.w $1698+1 ; Skull Woods
LDA.b #$16 : !ADD $7EF387 : STA $169A : LDA.b #$28 : ADC #$00 : sta.w $169A+1 ; Thieves Town
LDA.b #$16 : !ADD $7EF385 : STA $169C : LDA.b #$28 : ADC #$00 : sta.w $169C+1 ; Ice
LDA.b #$16 : !ADD $7EF383 : STA $169E : LDA.b #$28 : ADC #$00 : sta.w $169E+1 ; Mire
LDA.b #$16 : !ADD $7EF388 : STA $16A0 : LDA.b #$28 : ADC #$00 : sta.w $16A0+1 ; Turtle Rock
; Clear the carry only once
; it will be cleared by looping condition afterwards
CLC
LDA.b #$16 : !ADD $7EF389 : STA $16A4 : LDA.b #$28 : ADC #$00 : sta.w $16A4+1 ; Ganon's Tower
.next_small_key
LDX.w .small_key_x_offset,Y
LDA.l $7EF37D,X
AND.w #$00FF
REP #$20 ; set 16-bit accumulator
++
LDX.w .dungeon_positions,Y
ADC.w #$2816
STA.w $1686,X
INY : INY
CPY.w #26 : BCC .next_small_key
;-------------------------------------------------------------------------------
.skip_small_keys
; Big Keys
LDA HUDDungeonItems : AND.w #$0002 : BNE + : JMP ++ : +
LDA HUDDungeonItems : AND.w #$0002 : BEQ .skip_big_keys
LDA.w #$2811 : STA $16C4 ; big key icon
LDA $7EF367 : AND.w #$0040 : BEQ + ; Hyrule Castle
LDA.w #$2826 : STA $16C6
+
LDA $7EF367 : AND.w #$0008 : BEQ + ; Agahnims Tower
LDA.w #$2826 : STA $16C8
+
LDA $7EF367 : AND.w #$0020 : BEQ + ; Eastern
LDA.w #$2826 : STA $16CC
+
LDA $7EF367 : AND.w #$0010 : BEQ + ; Desert
LDA.w #$2826 : STA $16CE
+
LDA $7EF366 : AND.w #$0020 : BEQ + ; Hera
LDA.w #$2826 : STA $16D0
+
LDA $7EF367 : AND.w #$0002 : BEQ + ; PoD
LDA.w #$2826 : STA $16D4
+
LDA $7EF367 : AND.w #$0004 : BEQ + ; Swamp
LDA.w #$2826 : STA $16D6
+
LDA $7EF366 : AND.w #$0080 : BEQ + ; Skull Woods
LDA.w #$2826 : STA $16D8
+
LDA $7EF366 : AND.w #$0010 : BEQ + ; Thieves Town
LDA.w #$2826 : STA $16DA
+
LDA $7EF366 : AND.w #$0040 : BEQ + ; Ice
LDA.w #$2826 : STA $16DC
+
LDA $7EF367 : AND.w #$0001 : BEQ + ; Mire
LDA.w #$2826 : STA $16DE
+
LDA $7EF366 : AND.w #$0008 : BEQ + ; Turtle Rock
LDA.w #$2826 : STA $16E0
+
LDA $7EF366 : AND.w #$0004 : BEQ + ; Ganon's Tower
LDA.w #$2826 : STA $16E4
+
++
; use X so we can BIT
LDX.w #0
; load once and test multiple times
LDA.l $7EF366
.next_big_key
BIT.w .dungeon_bitmasks,X
BEQ ..skip_key
LDY.w .dungeon_positions,X
LDA.w #$2826
STA.w $16C6,Y
; reload
LDA.l $7EF366
..skip_key
INX : INX
CPX.w #26 : BCC .next_big_key
;-------------------------------------------------------------------------------
.skip_big_keys
LDA HUDDungeonItems : AND.w #$0010 : BEQ .skip_boss_kills
LDA.w #$0000 : STA $1704 ; skull icon TODO
LDY.w #0
.next_boss_kill
LDX.w .boss_room_ids,Y
LDA.l $7EF000,X
AND.w #$0400
BEQ ..skip_boss_kill
LDA.w #$2826
LDX.w .dungeon_positions,Y
STA.w $1706,Y
..skip_boss_kill
INY : INY
CPY.w #26 : BCC .next_boss_kill
;-------------------------------------------------------------------------------
.skip_boss_kills
; This should only display if select is pressed in hud
+++
LDA !HUD_FLAG : AND.w #$0020 : BNE + : JMP +++ : +
; Maps
LDA HUDDungeonItems : AND.w #$0004 : BNE + : JMP ++ : +
LDA HUDDungeonItems : AND.w #$0004 : BEQ .skip_maps
LDA.w #$2821 : STA $1684 ; map icon
LDA $7EF369 : AND.w #$0040 : BEQ + ; Hyrule Castle
LDA.w #$2826 : STA $1686
+
LDA $7EF369 : AND.w #$0008 : BEQ + ; Agahnims Tower
LDA.w #$2826 : STA $1688
+
LDA $7EF369 : AND.w #$0020 : BEQ + ; Eastern
LDA.w #$2826 : STA $168C
+
LDA $7EF369 : AND.w #$0010 : BEQ + ; Desert
LDA.w #$2826 : STA $168E
+
LDA $7EF368 : AND.w #$0020 : BEQ + ; Hera
LDA.w #$2826 : STA $1690
+
LDA $7EF369 : AND.w #$0002 : BEQ + ; PoD
LDA.w #$2826 : STA $1694
+
LDA $7EF369 : AND.w #$0004 : BEQ + ; Swamp
LDA.w #$2826 : STA $1696
+
LDA $7EF368 : AND.w #$0080 : BEQ + ; Skull Woods
LDA.w #$2826 : STA $1698
+
LDA $7EF368 : AND.w #$0010 : BEQ + ; Thieves Town
LDA.w #$2826 : STA $169A
+
LDA $7EF368 : AND.w #$0040 : BEQ + ; Ice
LDA.w #$2826 : STA $169C
+
LDA $7EF369 : AND.w #$0001 : BEQ + ; Mire
LDA.w #$2826 : STA $169E
+
LDA $7EF368 : AND.w #$0008 : BEQ + ; Turtle Rock
LDA.w #$2826 : STA $16A0
+
LDA $7EF368 : AND.w #$0004 : BEQ + ; Ganon's Tower
LDA.w #$2826 : STA $16A4
+
++
; use X so we can BIT
LDX.w #0
; load once and test multiple times
LDA.l $7EF368
.next_map
BIT.w .dungeon_bitmasks,X
BEQ ..skip_map
LDY.w .dungeon_positions,X
LDA.w #$2826
STA.w $1686,Y
; reload
LDA.l $7EF368
..skip_map
INX : INX
CPX.w #26 : BCC .next_map
;-------------------------------------------------------------------------------
.skip_maps
; Compasses
LDA HUDDungeonItems : AND.w #$0008 : BNE + : JMP ++ : +
LDA HUDDungeonItems : AND.w #$0008 : BEQ .skip_compasses
LDA.w #$2C20 : STA $16C4 ; compass icon
LDA $7EF365 : AND.w #$0040 : BEQ + ; Hyrule Castle
LDA.w #$2C26 : STA $16C6
+
LDA $7EF365 : AND.w #$0008 : BEQ + ; Agahnims Tower
LDA.w #$2C26 : STA $16C8
+
LDA $7EF365 : AND.w #$0020 : BEQ + ; Eastern
LDA.w #$2C26 : STA $16CC
+
LDA $7EF365 : AND.w #$0010 : BEQ + ; Desert
LDA.w #$2C26 : STA $16CE
+
LDA $7EF364 : AND.w #$0020 : BEQ + ; Hera
LDA.w #$2C26 : STA $16D0
+
LDA $7EF365 : AND.w #$0002 : BEQ + ; PoD
LDA.w #$2C26 : STA $16D4
+
LDA $7EF365 : AND.w #$0004 : BEQ + ; Swamp
LDA.w #$2C26 : STA $16D6
+
LDA $7EF364 : AND.w #$0080 : BEQ + ; Skull Woods
LDA.w #$2C26 : STA $16D8
+
LDA $7EF364 : AND.w #$0010 : BEQ + ; Thieves Town
LDA.w #$2C26 : STA $16DA
+
LDA $7EF364 : AND.w #$0040 : BEQ + ; Ice
LDA.w #$2C26 : STA $16DC
+
LDA $7EF365 : AND.w #$0001 : BEQ + ; Mire
LDA.w #$2C26 : STA $16DE
+
LDA $7EF364 : AND.w #$0008 : BEQ + ; Turtle Rock
LDA.w #$2C26 : STA $16E0
+
LDA $7EF364 : AND.w #$0004 : BEQ + ; Ganon's Tower
LDA.w #$2C26 : STA $16E4
+
++ : +++
; use X so we can BIT
LDX.w #0
; load once and test multiple times
LDA.l $7EF364
.next_compass
BIT.w .dungeon_bitmasks,X
BEQ ..skip_compass
LDY.w .dungeon_positions,X
LDA.w #$2826
STA.w $16C6,Y
; reload
LDA.l $7EF364
..skip_compass
INX : INX
CPX.w #26 : BCC .next_compass
;-------------------------------------------------------------------------------
.skip_compasses
+++
PLB
PLP
RTL
;--------------------------------------------------------------------------------

View File

@@ -184,7 +184,8 @@ db #$00 ; #$00 = Off (default) - #$01 = On
;--------------------------------------------------------------------------------
org $308045 ; PC 0x180045
HUDDungeonItems:
db #$00 ; display ----dcba a: Small Keys, b: Big Key, c: Map, d: Compass
; display ---edcba a: Small Keys, b: Big Key, c: Map, d: Compass, e: Bosses
db #$00
;--------------------------------------------------------------------------------
org $308046 ; PC 0x180046 Link's starting equipment
LinkStartingRupees: