Compare commits
57
Commits
1.1.0
...
2477918df9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2477918df9 | ||
|
|
a52f0d71fb | ||
|
|
85a4abbe7b | ||
|
|
d7503ad0f3 | ||
|
|
fbd4efc447 | ||
|
|
ec0bb02a53 | ||
|
|
80c0f47b1c | ||
|
|
b58641ad90 | ||
|
|
031a444a4a | ||
|
|
9174bbfba5 | ||
|
|
37caff7bcf | ||
|
|
6fb81c0aa8 | ||
|
|
6609253059 | ||
|
|
d0f4651130 | ||
|
|
57591e1ef8 | ||
|
|
ed2746a27b | ||
|
|
f8917c461a | ||
|
|
5dd62441a8 | ||
|
|
ab60e3fd35 | ||
|
|
bf2bd1974d | ||
|
|
c438e9fc3c | ||
|
|
17943f9904 | ||
|
|
41c520fe90 | ||
|
|
9fc26e8710 | ||
|
|
482381fe53 | ||
|
|
2b3b50fc5c | ||
|
|
b7c32fdfb1 | ||
|
|
ec1083a2e5 | ||
|
|
53d2a7606a | ||
|
|
781431f633 | ||
|
|
e02f98e6c5 | ||
|
|
7898e2149f | ||
|
|
cc635ddb78 | ||
|
|
3c41d7ff39 | ||
|
|
ab0f37b7ba | ||
|
|
343d61a976 | ||
|
|
804e72395b | ||
|
|
c5aaa07f3e | ||
|
|
e8e6120a9e | ||
|
|
b0dfcdcae6 | ||
|
|
920212d1b8 | ||
|
|
b7e123a7cf | ||
|
|
ce7f35ac7b | ||
|
|
a090f95659 | ||
|
|
9cbc202b62 | ||
|
|
2ee7be56fc | ||
|
|
fe5c936c7c | ||
|
|
afa0f95072 | ||
|
|
ead6a30aa5 | ||
|
|
d532ac2f4a | ||
|
|
71ebc09270 | ||
|
|
0fef82981a | ||
|
|
7d45a5cf66 | ||
|
|
5af2fdc51e | ||
|
|
bff1da4330 | ||
|
|
0dba4601fc | ||
|
|
e30e5107c6 |
@@ -74,6 +74,8 @@ function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<
|
|||||||
!FLAG_OW_MIXED = $04
|
!FLAG_OW_MIXED = $04
|
||||||
!FLAG_OW_CROSSED = $02
|
!FLAG_OW_CROSSED = $02
|
||||||
!FLAG_OW_BONKDROP = $02
|
!FLAG_OW_BONKDROP = $02
|
||||||
|
!FLAG_OW_CUSTOM_MAP = $02
|
||||||
|
!FLAG_OW_ADJUST_DYNAMIC_MAP_SPRITE_POSITION = $04
|
||||||
|
|
||||||
incsrc hooks.asm
|
incsrc hooks.asm
|
||||||
incsrc spriteswap.asm
|
incsrc spriteswap.asm
|
||||||
@@ -211,6 +213,7 @@ incsrc gk/variable_ganon_vulnerability.asm
|
|||||||
incsrc gk/pseudoflute.asm
|
incsrc gk/pseudoflute.asm
|
||||||
incsrc gk/fast_junk.asm
|
incsrc gk/fast_junk.asm
|
||||||
incsrc gk/dungeon_maps.asm
|
incsrc gk/dungeon_maps.asm
|
||||||
|
incsrc gk/dungeon_indicator.asm
|
||||||
print "End of B9: ", pc
|
print "End of B9: ", pc
|
||||||
|
|
||||||
warnpc $B9EE00
|
warnpc $B9EE00
|
||||||
@@ -332,6 +335,8 @@ DungeonMapDoorConnectors:
|
|||||||
incbin "menu/door_connectors.3bppc"
|
incbin "menu/door_connectors.3bppc"
|
||||||
MapSheetD4:
|
MapSheetD4:
|
||||||
incbin "menu/map_sheet_d4.3bppc"
|
incbin "menu/map_sheet_d4.3bppc"
|
||||||
|
DRSheet14:
|
||||||
|
incbin "menu/dr_sheet_14.3bppc"
|
||||||
|
|
||||||
org $8CD7DF
|
org $8CD7DF
|
||||||
incsrc data/playernamecharmap.asm
|
incsrc data/playernamecharmap.asm
|
||||||
|
|||||||
@@ -28,16 +28,19 @@ AddBonkTremors:
|
|||||||
JSL AddDashTremor : JSL Player_ApplyRumbleToSprites ; things we wrote over
|
JSL AddDashTremor : JSL Player_ApplyRumbleToSprites ; things we wrote over
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
BonkBreakableWall:
|
ValidDashCheck:
|
||||||
PHX : PHP
|
PHP
|
||||||
SEP #$30 ; set 8-bit accumulator and index registers
|
SEP #$20
|
||||||
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
||||||
LDA.l BootsEquipment : BNE + ; Check for Boots
|
LDA.l BootsEquipment : BEQ .exit
|
||||||
PLP : PLX : LDA.w #$0000 : RTL
|
+ LDA.w LinkDashing
|
||||||
+
|
.exit
|
||||||
PLP : PLX
|
BEQ +
|
||||||
LDA.w LinkDashing : AND.w #$00FF ; things we wrote over
|
PLP : REP #$02
|
||||||
RTL
|
RTL
|
||||||
|
+
|
||||||
|
PLP : SEP #$02
|
||||||
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
BonkRockPile:
|
BonkRockPile:
|
||||||
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
||||||
@@ -48,10 +51,7 @@ BonkRockPile:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
GravestoneHook:
|
GravestoneHook:
|
||||||
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
JSL ValidDashCheck : BEQ .done ; things we wrote over
|
||||||
LDA.l BootsEquipment : BEQ .done ; Check for Boots
|
|
||||||
+
|
|
||||||
LDA.w LinkDashing : BEQ .done ; things we wrote over
|
|
||||||
JML moveGravestone
|
JML moveGravestone
|
||||||
.done
|
.done
|
||||||
JML GravestoneHook_continue
|
JML GravestoneHook_continue
|
||||||
|
|||||||
+6
-7
@@ -17,15 +17,14 @@ DoDungeonMapBossIcon:
|
|||||||
ASL
|
ASL
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
|
; get sprite pointer table
|
||||||
|
LDA.l $89C298 : STA.b Scrap00
|
||||||
|
LDA.w #$0089 : STA.b Scrap02
|
||||||
|
TXY
|
||||||
; get sprite pointer for room
|
; get sprite pointer for room
|
||||||
LDA.l UWSpritesPointers,X
|
LDA.b [Scrap00], Y
|
||||||
STA.b Scrap00 ; pointer in $00
|
STA.b Scrap00 ; pointer in $00
|
||||||
if !FEATURE_FIX_BASEROM
|
LDA.w #bank(UWSpritesData) : STA.b Scrap02
|
||||||
LDA.w #$0089
|
|
||||||
else
|
|
||||||
LDA.w #$0028 ; set the bank to 28 for now
|
|
||||||
endif
|
|
||||||
STA.b Scrap02
|
|
||||||
LDY.w #$0001 ; to skip the "sort"
|
LDY.w #$0001 ; to skip the "sort"
|
||||||
|
|
||||||
; get first byte to make sure it isn't an empty room
|
; get first byte to make sure it isn't an empty room
|
||||||
|
|||||||
@@ -238,6 +238,18 @@ FixJingleGlitch:
|
|||||||
.exit
|
.exit
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
FixSwimBump:
|
||||||
|
LDA.b LinkIncapacitatedTimer : BEQ .normal
|
||||||
|
LDA.b LinkJumping : BNE .normal
|
||||||
|
INC.b LinkJumping
|
||||||
|
BRA .not_diving
|
||||||
|
.normal
|
||||||
|
LDA.b LinkJumping : BNE .continue ; what we wrote over
|
||||||
|
.not_diving
|
||||||
|
PLA : PLA : PEA.w $87964D ; skip ahead, not diving
|
||||||
|
.continue
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
; Fix spawning with more hearts than capacity when less than 3 heart containers
|
; Fix spawning with more hearts than capacity when less than 3 heart containers
|
||||||
pushpc
|
pushpc
|
||||||
org $09F4AC ; <- module_death.asm:331
|
org $09F4AC ; <- module_death.asm:331
|
||||||
|
|||||||
@@ -599,7 +599,7 @@ skip $10
|
|||||||
BigKeyStatus: ;27f040 (status 2 indicate BnC guard)
|
BigKeyStatus: ;27f040 (status 2 indicate BnC guard)
|
||||||
dw $0002, $0002, $0001, $0001, $0000, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0000, $0000
|
dw $0002, $0002, $0001, $0001, $0000, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0001, $0000, $0000
|
||||||
DungeonReminderTable: ;27f060
|
DungeonReminderTable: ;27f060
|
||||||
dw $2D50, $2D50, $2D51, $2D52, $2D54, $2D56, $2D55, $2D5A, $2D57, $2D59, $2D53, $2D58, $2D5B, $2D5C, $0000, $0000
|
dw $2DA4, $2DA4, $2DA5, $2DA6, $2DA8, $2DAA, $2DA9, $2DAE, $2DAB, $2DAD, $2DA7, $2DAC, $2DAF, $2DB0, $0000, $0000
|
||||||
TotalLocationsLow: ;27f080
|
TotalLocationsLow: ;27f080
|
||||||
db $08, $08, $06, $06, $02, $00, $04, $08, $08, $08, $06, $08, $02, $07, $00, $00
|
db $08, $08, $06, $06, $02, $00, $04, $08, $08, $08, $06, $08, $02, $07, $00, $00
|
||||||
TotalLocationsHigh: ;27f090
|
TotalLocationsHigh: ;27f090
|
||||||
@@ -696,4 +696,4 @@ dw $ffff
|
|||||||
OldManDarkWorld:
|
OldManDarkWorld:
|
||||||
dw $ffff
|
dw $ffff
|
||||||
OldManRetrievalWorld:
|
OldManRetrievalWorld:
|
||||||
dw $0000
|
dw $0000
|
||||||
|
|||||||
+38
-19
@@ -1,10 +1,11 @@
|
|||||||
!BlankTile = $207F
|
!BlankTile = $207F
|
||||||
!SlashTile = $2830
|
!SlashTile = $2830
|
||||||
|
!PlusTile = $2404
|
||||||
!HyphenTile = $2405
|
!HyphenTile = $2405
|
||||||
!LTile = $2D68
|
!LTile = $2D68
|
||||||
!DTile = $2D60
|
!DTile = $2D60
|
||||||
!RedSquare = $345E
|
|
||||||
!BlueSquare = $2C5E
|
!BlueSquare = $2C5E
|
||||||
|
!BossIcon = $253C
|
||||||
|
|
||||||
DrHudOverride:
|
DrHudOverride:
|
||||||
PHB
|
PHB
|
||||||
@@ -46,7 +47,7 @@ DRHUD_BossIndicator:
|
|||||||
SEP #$20
|
SEP #$20
|
||||||
BEQ .draw_indicator
|
BEQ .draw_indicator
|
||||||
LDA.l CompassBossIndicator, x : CMP.b RoomIndex : BNE .draw_indicator
|
LDA.l CompassBossIndicator, x : CMP.b RoomIndex : BNE .draw_indicator
|
||||||
LDY.w #!RedSquare
|
LDY.w #!BossIcon
|
||||||
.draw_indicator
|
.draw_indicator
|
||||||
STY.w HUDMultiIndicator
|
STY.w HUDMultiIndicator
|
||||||
BRA DRHUD_DrawCurrentDungeonIndicator
|
BRA DRHUD_DrawCurrentDungeonIndicator
|
||||||
@@ -71,13 +72,12 @@ DRHUD_DrawCurrentDungeonIndicator: ; mX
|
|||||||
CMP.b #$06 : BEQ .draw_indicator
|
CMP.b #$06 : BEQ .draw_indicator
|
||||||
|
|
||||||
.get_indicator
|
.get_indicator
|
||||||
REP #$20 : LDA.l DungeonReminderTable,X : TAY
|
LDY.w #$2C28
|
||||||
SEP #$20
|
|
||||||
.draw_indicator
|
.draw_indicator
|
||||||
STY.w HUDCurrentDungeonWorld
|
STY.w HUDCurrentDungeonWorld
|
||||||
|
|
||||||
DRHUD_DrawKeyCounter:
|
DRHUD_DrawKeyCounter:
|
||||||
LDA.l DRFlags : AND.b #$04 : BEQ DRHUD_Finished
|
LDA.l DRFlags : AND.b #$04 : BEQ .to_finished
|
||||||
LDA.l CompassMode : BIT.b #$03 : BEQ DRHUD_Finished
|
LDA.l CompassMode : BIT.b #$03 : BEQ DRHUD_Finished
|
||||||
REP #$20
|
REP #$20
|
||||||
BIT.w #$0002 : BNE .skip_map_check
|
BIT.w #$0002 : BNE .skip_map_check
|
||||||
@@ -90,8 +90,17 @@ DRHUD_DrawKeyCounter:
|
|||||||
LDA.l GenericKeys : LSR : BCS .total_only
|
LDA.l GenericKeys : LSR : BCS .total_only
|
||||||
LDA.w DungeonCollectedKeys, X : JSR ConvertToDisplay : STA.w HUDKeysObtained
|
LDA.w DungeonCollectedKeys, X : JSR ConvertToDisplay : STA.w HUDKeysObtained
|
||||||
LDA.w #!SlashTile : STA.w HUDKeysSlash
|
LDA.w #!SlashTile : STA.w HUDKeysSlash
|
||||||
|
|
||||||
|
LDA.l ExtraChestKeys, X : AND.w #$00FF : BEQ .total_only
|
||||||
|
JSR ConvertToDisplay : STA.w HUDKeysExtraCount
|
||||||
|
LDA.w #!PlusTile : STA.w HUDKeysExtraPlus
|
||||||
|
|
||||||
.total_only
|
.total_only
|
||||||
LDA.l ChestKeys, x : JSR ConvertToDisplay : STA.w HUDKeysTotal
|
SEP #$20
|
||||||
|
LDA.l ChestKeys, X : SEC : SBC.l ExtraChestKeys, X
|
||||||
|
REP #$20
|
||||||
|
JSR ConvertToDisplay : STA.w HUDKeysTotal
|
||||||
|
.to_finished
|
||||||
JMP DRHUD_Finished
|
JMP DRHUD_Finished
|
||||||
|
|
||||||
OWRHUD_DrawWorldIndicator:
|
OWRHUD_DrawWorldIndicator:
|
||||||
@@ -167,9 +176,7 @@ DrHudDungeonItemsAdditions:
|
|||||||
jsr ConvertToDisplay2 : sta.w $1644, y
|
jsr ConvertToDisplay2 : sta.w $1644, y
|
||||||
+ iny #2 : lda.w #$24f5 : sta.w $1644, y
|
+ iny #2 : lda.w #$24f5 : sta.w $1644, y
|
||||||
phx : ldx.b Scrap00
|
phx : ldx.b Scrap00
|
||||||
LDA.l CompassMode : BIT.w #$0002 : BNE .skip_map_check
|
LDA.l MapField : ORA.l MapCountDisplay : AND.l DungeonMask, x : BEQ .key_info_done ; must have map
|
||||||
LDA.l MapField : AND.l DungeonMask, x : BEQ .key_info_done ; must have map
|
|
||||||
.skip_map_check
|
|
||||||
plx : sep #$30 : lda.l ChestKeys, x : sta.b Scrap02
|
plx : sep #$30 : lda.l ChestKeys, x : sta.b Scrap02
|
||||||
lda.l GenericKeys : bne +++
|
lda.l GenericKeys : bne +++
|
||||||
lda.b Scrap02 : !SUB.l DungeonCollectedKeys, x : sta.b Scrap02
|
lda.b Scrap02 : !SUB.l DungeonCollectedKeys, x : sta.b Scrap02
|
||||||
@@ -294,17 +301,29 @@ BossStatus:
|
|||||||
; default palette 3 - white
|
; default palette 3 - white
|
||||||
LDA.l DungeonReminderTable, X : RTS
|
LDA.l DungeonReminderTable, X : RTS
|
||||||
|
|
||||||
ConvertToDisplay:
|
ConvertToDisplay: ; transparent background
|
||||||
and.w #$00ff : cmp.w #$000a : !BLT +
|
AND.w #$00FF
|
||||||
!ADD.w #$2519 : rts
|
CMP.w #$000A : BCC .under10
|
||||||
+ !ADD.w #$2490 : rts
|
CMP.w #$000C : BCC .under12
|
||||||
|
.over11
|
||||||
|
CLC : ADC.w #$2553 : RTS
|
||||||
|
.under12
|
||||||
|
CLC : ADC.w #$2519 : RTS
|
||||||
|
.under10
|
||||||
|
CLC : ADC.w #$2490 : RTS
|
||||||
|
|
||||||
ConvertToDisplay2:
|
ConvertToDisplay2: ; solid background
|
||||||
and.w #$00ff : beq ++
|
AND.w #$00FF : BEQ .zero
|
||||||
cmp.w #$000a : !BLT +
|
CMP.w #$000A : BCC .under10
|
||||||
!ADD.w #$2517 : rts ; 2580 with 258A as "A" for non transparent digits
|
CMP.w #$000C : BCC .under12
|
||||||
+ !ADD.w #$2816 : rts
|
.over11
|
||||||
++ lda.w #$2827 : rts ; 0/O for 0 or placeholder digit ;2483
|
CLC : ADC.w #$2580 : RTS
|
||||||
|
.under12
|
||||||
|
CLC : ADC.w #$2517 : RTS
|
||||||
|
.under10
|
||||||
|
CLC : ADC.w #$2816 : RTS
|
||||||
|
.zero
|
||||||
|
LDA.w #$2827 : RTS
|
||||||
|
|
||||||
CountAbsorbedKeys:
|
CountAbsorbedKeys:
|
||||||
JML IncrementSmallKeysNoPrimary
|
JML IncrementSmallKeysNoPrimary
|
||||||
|
|||||||
+11
-1
@@ -23,7 +23,7 @@ JSL SpritePrep_OldManFollower : NOP #2 : db $F0 ; BEQ
|
|||||||
org $9DFF18
|
org $9DFF18
|
||||||
JSL SpriteDraw_OldManFollower
|
JSL SpriteDraw_OldManFollower
|
||||||
org $9EE9BC
|
org $9EE9BC
|
||||||
JSL Follower_CheckMessageCollision
|
JSL OldMan_WaitForCollision
|
||||||
org $9EE9CC
|
org $9EE9CC
|
||||||
JSL OldMan_BecomeFollower : NOP #2
|
JSL OldMan_BecomeFollower : NOP #2
|
||||||
|
|
||||||
@@ -631,6 +631,15 @@ SpriteDraw_OldManFollower:
|
|||||||
dw 0, 0 : db $AC, $00, $00, $02
|
dw 0, 0 : db $AC, $00, $00, $02
|
||||||
dw 0, 8 : db $AE, $00, $00, $02
|
dw 0, 8 : db $AE, $00, $00, $02
|
||||||
|
|
||||||
|
OldMan_WaitForCollision:
|
||||||
|
PHA
|
||||||
|
LDA.w LinkIFrames : BEQ +
|
||||||
|
PLA : CLC
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
PLA
|
||||||
|
JML Follower_CheckMessageCollision
|
||||||
|
|
||||||
OldMan_BecomeFollower:
|
OldMan_BecomeFollower:
|
||||||
LDA.l FollowerTravelAllowed : CMP.b #$02 : BCC .set_follower_and_despawn
|
LDA.l FollowerTravelAllowed : CMP.b #$02 : BCC .set_follower_and_despawn
|
||||||
PLA : PLA
|
PLA : PLA
|
||||||
@@ -848,6 +857,7 @@ RTL
|
|||||||
Kiki_DontScareTheMonke:
|
Kiki_DontScareTheMonke:
|
||||||
LDA.b LinkJumping : BEQ .return
|
LDA.b LinkJumping : BEQ .return
|
||||||
CMP.b #$02 : BEQ .no_spook ; needed for quake usage
|
CMP.b #$02 : BEQ .no_spook ; needed for quake usage
|
||||||
|
LDA.b GameMode : CMP.b #$0F : BEQ .no_spook ; needed for entrance transitions
|
||||||
LDA.w NoDamage : BNE .no_spook
|
LDA.w NoDamage : BNE .no_spook
|
||||||
LDA.w LinkThud : BNE .no_spook
|
LDA.w LinkThud : BNE .no_spook
|
||||||
.spook
|
.spook
|
||||||
|
|||||||
+28
-14
@@ -17,7 +17,7 @@ CheckLoot:
|
|||||||
STA.b $0E
|
STA.b $0E
|
||||||
|
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$01FF
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
@@ -31,6 +31,10 @@ CheckLoot:
|
|||||||
STA.b $0E
|
STA.b $0E
|
||||||
|
|
||||||
+ LDA.w DungeonID
|
+ LDA.w DungeonID
|
||||||
|
AND.w #$00FF
|
||||||
|
CMP.w #$00FF
|
||||||
|
BEQ .skip_dungeon_checks
|
||||||
|
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
LDA.l MapField
|
LDA.l MapField
|
||||||
@@ -52,6 +56,8 @@ CheckLoot:
|
|||||||
STA.b $0E
|
STA.b $0E
|
||||||
+
|
+
|
||||||
|
|
||||||
|
.skip_dungeon_checks
|
||||||
|
|
||||||
LDA.l ItemSources : BIT.w #$0001 : BEQ +
|
LDA.l ItemSources : BIT.w #$0001 : BEQ +
|
||||||
JSR CheckChests
|
JSR CheckChests
|
||||||
+
|
+
|
||||||
@@ -82,7 +88,7 @@ CheckLoot:
|
|||||||
|
|
||||||
CheckChests:
|
CheckChests:
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$01FF
|
||||||
STA.b $00
|
STA.b $00
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
@@ -141,7 +147,7 @@ CheckBoss:
|
|||||||
|
|
||||||
+
|
+
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$01FF
|
||||||
STA.b $04
|
STA.b $04
|
||||||
|
|
||||||
LDX.w #$FFFA
|
LDX.w #$FFFA
|
||||||
@@ -196,7 +202,7 @@ CheckBoss:
|
|||||||
|
|
||||||
CheckPrize:
|
CheckPrize:
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$01FF
|
||||||
STA.b $04
|
STA.b $04
|
||||||
|
|
||||||
LDX.w #$FFFD
|
LDX.w #$FFFD
|
||||||
@@ -232,7 +238,7 @@ CheckPrize:
|
|||||||
|
|
||||||
CheckPots:
|
CheckPots:
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$01FF
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
@@ -298,7 +304,7 @@ CheckPots:
|
|||||||
+
|
+
|
||||||
|
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$01FF
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
if !FEATURE_FIX_BASEROM
|
if !FEATURE_FIX_BASEROM
|
||||||
@@ -336,7 +342,7 @@ CheckJunkPot:
|
|||||||
+
|
+
|
||||||
|
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$01FF
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
LDA.l PotCollectionRateTable, X
|
LDA.l PotCollectionRateTable, X
|
||||||
@@ -364,11 +370,17 @@ endif
|
|||||||
|
|
||||||
CheckEnemies:
|
CheckEnemies:
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$01FF
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
LDA.l UWSpritesPointers, X
|
|
||||||
|
; get sprite pointer table
|
||||||
|
LDA.l $89C298 : STA.b $04
|
||||||
|
LDA.w #$0089 : STA.b $06
|
||||||
|
TXY
|
||||||
|
; get sprite pointer for room
|
||||||
|
LDA.b [$04], Y
|
||||||
INC A ; skip the layered/unlayered indicator
|
INC A ; skip the layered/unlayered indicator
|
||||||
STA.b $04
|
STA.b $04
|
||||||
LDA.w #bank(UWSpritesData)
|
LDA.w #bank(UWSpritesData)
|
||||||
@@ -448,7 +460,7 @@ CheckEnemies:
|
|||||||
+
|
+
|
||||||
|
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$01FF
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
|
|
||||||
@@ -478,7 +490,9 @@ GetLootClass:
|
|||||||
CMP.w #$0080 : BNE .not_compass
|
CMP.w #$0080 : BNE .not_compass
|
||||||
|
|
||||||
.compass
|
.compass
|
||||||
LDA.l AlwaysShowCompass : BNE .check_value
|
LDA.l AlwaysShowCompass
|
||||||
|
AND.w #$00FF
|
||||||
|
BNE .check_value
|
||||||
|
|
||||||
.not_compass
|
.not_compass
|
||||||
LDA.b $0E
|
LDA.b $0E
|
||||||
@@ -526,7 +540,7 @@ macro DefineGetFooSection(type, offset)
|
|||||||
Get<type>Section:
|
Get<type>Section:
|
||||||
PHX
|
PHX
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$01FF
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
LDA.l SplitRooms, X
|
LDA.l SplitRooms, X
|
||||||
@@ -574,13 +588,13 @@ Check<type>Section:
|
|||||||
STA.b $CC
|
STA.b $CC
|
||||||
|
|
||||||
LDA.b $CB
|
LDA.b $CB
|
||||||
AND.w #$00FF
|
AND.w #$00F0
|
||||||
BEQ .yes
|
BEQ .yes
|
||||||
|
|
||||||
JSR Get<type>Section
|
JSR Get<type>Section
|
||||||
|
|
||||||
LDA.b $CB
|
LDA.b $CB
|
||||||
AND.w #$00FF
|
AND.w #$00F0
|
||||||
LSR A : LSR A : LSR A : LSR A
|
LSR A : LSR A : LSR A : LSR A
|
||||||
DEC A
|
DEC A
|
||||||
CMP.b $CE
|
CMP.b $CE
|
||||||
|
|||||||
+342
-2
@@ -61,7 +61,24 @@ SplitRooms:
|
|||||||
%d(.no) : %d(.d1) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.d6) : %d(.no)
|
%d(.no) : %d(.d1) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.d6) : %d(.no)
|
||||||
%d(.no) : %d(.no) : %d(.no) : %d(.db) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
%d(.no) : %d(.no) : %d(.no) : %d(.db) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||||
|
|
||||||
%d(.no)
|
; E0
|
||||||
|
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||||
|
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||||
|
|
||||||
|
; F0
|
||||||
|
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||||
|
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||||
|
|
||||||
|
; 100
|
||||||
|
%d(.no) : %d(.101) : %d(.no) : %d(.103) : %d(.no) : %d(.no) : %d(.106) : %d(.107)
|
||||||
|
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.10c) : %d(.no) : %d(.10e) : %d(.no)
|
||||||
|
|
||||||
|
; 110
|
||||||
|
%d(.no) : %d(.no) : %d(.112) : %d(.no) : %d(.114) : %d(.115) : %d(.no) : %d(.no)
|
||||||
|
%d(.no) : %d(.no) : %d(.no) : %d(.11b) : %d(.11c) : %d(.no) : %d(.11e) : %d(.11f)
|
||||||
|
|
||||||
|
; 120
|
||||||
|
%d(.120) : %d(.no) : %d(.122) : %d(.no) : %d(.124) : %d(.125) : %d(.126) : %d(.no)
|
||||||
|
|
||||||
.no
|
.no
|
||||||
db $00
|
db $00
|
||||||
@@ -435,7 +452,7 @@ db $01
|
|||||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||||
..areas
|
..areas
|
||||||
db $02, $00, $80, $00, $FF
|
db $02, $00, $80, $00, $FF
|
||||||
db $01, $34, $D4, $B8, $FF
|
db $01, $34, $44, $B4, $FF
|
||||||
db $FF
|
db $FF
|
||||||
..doors
|
..doors
|
||||||
db $03, $06
|
db $03, $06
|
||||||
@@ -569,3 +586,326 @@ db $FF
|
|||||||
..chests
|
..chests
|
||||||
db $01
|
db $01
|
||||||
db $FF
|
db $FF
|
||||||
|
|
||||||
|
.101 ; East Snitch House (2) // West Snitch House (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(..pots) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..pots
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.103 ; Man With Beds (3) // Front of Tavern (2) // Back of Tavern (1)
|
||||||
|
db $02
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas3) : %d(..doors3) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies3)
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas2) : %d(..doors2) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(..pots2) : %d(..enemies2)
|
||||||
|
..areas3
|
||||||
|
db $03, $80, $FF, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors3
|
||||||
|
db $08
|
||||||
|
db $FF
|
||||||
|
..enemies3
|
||||||
|
db $02
|
||||||
|
db $FF
|
||||||
|
..areas2
|
||||||
|
db $03, $00, $7F, $50, $FF
|
||||||
|
db $FF
|
||||||
|
..doors2
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..pots2
|
||||||
|
db $02
|
||||||
|
db $FF
|
||||||
|
..enemies2
|
||||||
|
db $00
|
||||||
|
db $01
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.106 ; VoO Chest Game (2) // Brewery (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.107 ; Library (2) // Bomb Refill Hut (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.10c ; Mimic Cave (2) // Hookshot Fairy Pot (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(..chests) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..chests
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $04
|
||||||
|
db $05
|
||||||
|
db $06
|
||||||
|
db $07
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.10e ; Storyteller (2) // Storyteller (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..chests
|
||||||
|
db $FF
|
||||||
|
..pots
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.112 ; Dark Chapel (2) // Store (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.114 ; Waterfall Fairy (2) // Hint NPC (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(..chests) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..chests
|
||||||
|
db $00
|
||||||
|
db $01
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.115 ; Capacity Fairy (1) // Healing Fairy (2)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $80, $FF, $80, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $08
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.11b ; Cave 45 (2) // Graveyard Ledge (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(..pots) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..pots
|
||||||
|
db $00
|
||||||
|
db $01
|
||||||
|
db $02
|
||||||
|
db $03
|
||||||
|
db $04
|
||||||
|
db $05
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $01
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.11c ; Bomb Shop (2) // C-Shaped House (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.11e ; Long Fairy Cave (2) // Hype Cave (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $01
|
||||||
|
db $02
|
||||||
|
db $03
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.11f ; Lumberjack House (1) // Store (2)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $80, $FF, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $08
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.120 ; Ice Rod Cave (1) // Cool Bee Cave (2)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $80, $FF, $00, $FF
|
||||||
|
db $03, $80, $FF, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $08
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $01
|
||||||
|
db $02
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.122 ; Fortune Teller (2) // Other Fortune Teller (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.124 ; 50-Rupee Cave (1) // Bonk Rocks (2)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(..chests) : %d(.no_items) : %d(.no_items)
|
||||||
|
..areas
|
||||||
|
db $03, $80, $FF, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $08
|
||||||
|
db $FF
|
||||||
|
..chests
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.125 ; 20-Rupee Cave (2) // Spiky Hint Cave (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(..pots) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..pots
|
||||||
|
db $00
|
||||||
|
db $01
|
||||||
|
db $02
|
||||||
|
db $03
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $00
|
||||||
|
db $FF
|
||||||
|
|
||||||
|
.126 ; Bonk Fairy Pool (2) // Checkerboard Cave (1)
|
||||||
|
db $01
|
||||||
|
%sq($00)
|
||||||
|
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||||
|
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||||
|
..areas
|
||||||
|
db $03, $00, $7F, $00, $FF
|
||||||
|
db $FF
|
||||||
|
..doors
|
||||||
|
db $06
|
||||||
|
db $FF
|
||||||
|
..enemies
|
||||||
|
db $01
|
||||||
|
db $02
|
||||||
|
db $03
|
||||||
|
db $04
|
||||||
|
db $FF
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ DrawSingleRoomLoot:
|
|||||||
STA.w GFXStripes+$0C, Y
|
STA.w GFXStripes+$0C, Y
|
||||||
|
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
|
AND.w #$F0FF
|
||||||
JSL CheckLoot
|
JSL CheckLoot
|
||||||
|
|
||||||
ASL A : ASL A : ASL A
|
ASL A : ASL A : ASL A
|
||||||
@@ -687,6 +688,13 @@ GetSpecificRoomVisibility:
|
|||||||
STA.b $0A
|
STA.b $0A
|
||||||
+
|
+
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
LDA.b $0A
|
||||||
|
CMP.b $0B
|
||||||
|
BCC +
|
||||||
|
STA.b $0B
|
||||||
|
+
|
||||||
|
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.b $CA
|
LDA.b $CA
|
||||||
AND.w #$00FF
|
AND.w #$00FF
|
||||||
@@ -1453,8 +1461,8 @@ MoveDoorsMapCursor:
|
|||||||
BRA .done
|
BRA .done
|
||||||
|
|
||||||
.no_move
|
.no_move
|
||||||
LDA.b #$3C
|
; LDA.b #$3C
|
||||||
STA.w $012E
|
; STA.w $012E
|
||||||
|
|
||||||
.done
|
.done
|
||||||
PLP
|
PLP
|
||||||
@@ -2105,6 +2113,13 @@ DrawDoorsStairs:
|
|||||||
|
|
||||||
DetectLinksSection:
|
DetectLinksSection:
|
||||||
LDA.b RoomIndex
|
LDA.b RoomIndex
|
||||||
|
CMP.w #$0128
|
||||||
|
BCC +
|
||||||
|
|
||||||
|
LDA.w #$0000
|
||||||
|
RTL
|
||||||
|
+
|
||||||
|
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
LDA.l SplitRooms, X
|
LDA.l SplitRooms, X
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
LoadDungeonIndicator:
|
||||||
|
; what we wrote over
|
||||||
|
JSL InitializeTilesets
|
||||||
|
|
||||||
|
LDA.w DungeonID
|
||||||
|
CMP.b #DungeonIndicatorMap_end-DungeonIndicatorMap : BCS .done
|
||||||
|
TAX
|
||||||
|
LDA.l DungeonIndicatorMap, X
|
||||||
|
TAX
|
||||||
|
|
||||||
|
LDA.b #$80
|
||||||
|
STA.w $2115
|
||||||
|
|
||||||
|
REP #$20
|
||||||
|
LDA.w #$7140
|
||||||
|
STA.w $2116
|
||||||
|
|
||||||
|
LDY.b #$10
|
||||||
|
|
||||||
|
- LDA.l DungeonIndicatorGfx, X
|
||||||
|
STA.w $2118
|
||||||
|
INX #2
|
||||||
|
DEY #2
|
||||||
|
BNE -
|
||||||
|
|
||||||
|
SEP #$20
|
||||||
|
.done
|
||||||
|
RTL
|
||||||
|
|
||||||
|
DungeonIndicatorMap:
|
||||||
|
dw $0000
|
||||||
|
dw $0000
|
||||||
|
dw $0010
|
||||||
|
dw $0020
|
||||||
|
dw $0040
|
||||||
|
dw $0060
|
||||||
|
dw $0050
|
||||||
|
dw $00A0
|
||||||
|
dw $0070
|
||||||
|
dw $0090
|
||||||
|
dw $0030
|
||||||
|
dw $0080
|
||||||
|
dw $00B0
|
||||||
|
dw $00C0
|
||||||
|
.end
|
||||||
|
|
||||||
|
DungeonIndicatorGfx:
|
||||||
|
incbin "menu/dr_dungeon_indicators.2bpp"
|
||||||
|
.end
|
||||||
|
|
||||||
@@ -24,6 +24,8 @@ endmacro
|
|||||||
%WriteGFXSheetPointer($62, DungeonMapIcons5)
|
%WriteGFXSheetPointer($62, DungeonMapIcons5)
|
||||||
%WriteGFXSheetPointer($63, DungeonMapIcons6)
|
%WriteGFXSheetPointer($63, DungeonMapIcons6)
|
||||||
|
|
||||||
|
%WriteGFXSheetPointer($14, DRSheet14)
|
||||||
|
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
incsrc doors_dungeon_map.asm
|
incsrc doors_dungeon_map.asm
|
||||||
@@ -32,6 +34,7 @@ incsrc map_bg3.asm
|
|||||||
incsrc dungeon_switch.asm
|
incsrc dungeon_switch.asm
|
||||||
incsrc draw_loot.asm
|
incsrc draw_loot.asm
|
||||||
incsrc check_loot.asm
|
incsrc check_loot.asm
|
||||||
|
incsrc loot_hud.asm
|
||||||
incsrc blink_loot.asm
|
incsrc blink_loot.asm
|
||||||
incsrc data/doors_display.asm
|
incsrc data/doors_display.asm
|
||||||
incsrc data/spiral_stairs.asm
|
incsrc data/spiral_stairs.asm
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
UpdateLootHUD:
|
||||||
|
PHP
|
||||||
|
REP #$30
|
||||||
|
PHX : PHY
|
||||||
|
SEP #$30
|
||||||
|
|
||||||
|
LDA.l ShowLootInHUD : BEQ .setting_off
|
||||||
|
LDA.b IndoorsFlag : BEQ .done
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
LDA.b $00 : PHA
|
||||||
|
LDA.b $02 : PHA
|
||||||
|
LDA.b $04 : PHA
|
||||||
|
LDA.b $06 : PHA
|
||||||
|
LDA.b $08 : PHA
|
||||||
|
LDA.b $0E : PHA
|
||||||
|
|
||||||
|
; if if door rando, check for section of supertile
|
||||||
|
LDA.l DRMode
|
||||||
|
BNE +
|
||||||
|
|
||||||
|
; if not in door rando, check for section of supertile if we're not in a dungeon
|
||||||
|
LDA.w DungeonID
|
||||||
|
AND.w #$00FF
|
||||||
|
CMP.w #$00FF
|
||||||
|
BEQ +
|
||||||
|
|
||||||
|
; just load the room id, we don't care about sections
|
||||||
|
LDA.b RoomIndex
|
||||||
|
BRA .check
|
||||||
|
|
||||||
|
+ ; figure out section before checking
|
||||||
|
JSL DetectLinksSection
|
||||||
|
INC A
|
||||||
|
XBA
|
||||||
|
ASL A : ASL A : ASL A : ASL A
|
||||||
|
ORA.b RoomIndex
|
||||||
|
.check
|
||||||
|
JSL CheckLoot
|
||||||
|
|
||||||
|
SEP #$30
|
||||||
|
CMP.l ShowItems_hud_cap
|
||||||
|
BCC +
|
||||||
|
LDA.l ShowItems_hud_cap
|
||||||
|
+
|
||||||
|
|
||||||
|
LDX.w DungeonID
|
||||||
|
CPX.b #$FF
|
||||||
|
BNE +
|
||||||
|
CMP.l ShowItems_cave_cap
|
||||||
|
BCC +
|
||||||
|
LDA.l ShowItems_cave_cap
|
||||||
|
+
|
||||||
|
|
||||||
|
REP #$30
|
||||||
|
|
||||||
|
ASL A : TAX
|
||||||
|
LDA.l HUDLootTypeIcons, X
|
||||||
|
STA.w EnemyDropIndicator
|
||||||
|
|
||||||
|
PLA : STA.b $0E
|
||||||
|
PLA : STA.b $08
|
||||||
|
PLA : STA.b $06
|
||||||
|
PLA : STA.b $04
|
||||||
|
PLA : STA.b $02
|
||||||
|
PLA : STA.b $00
|
||||||
|
BRA .done
|
||||||
|
|
||||||
|
.setting_off
|
||||||
|
JSL SetupEnemyDropIndicator
|
||||||
|
|
||||||
|
.done
|
||||||
|
REP #$30
|
||||||
|
PLY : PLX
|
||||||
|
PLP
|
||||||
|
RTL
|
||||||
+28
-1
@@ -146,6 +146,25 @@ dw $25A4, $25A4 ; Reserved
|
|||||||
dw $25A4, $25A4 ; Reserved
|
dw $25A4, $25A4 ; Reserved
|
||||||
|
|
||||||
; $B9FB40
|
; $B9FB40
|
||||||
|
HUDLootTypeIcons:
|
||||||
|
dw $287F ; 00 - nothing
|
||||||
|
dw $295C ; 01 - unknown - dot
|
||||||
|
dw $2954 ; 02 - junk - pot
|
||||||
|
dw $2950 ; 03 - small key
|
||||||
|
dw $2952 ; 04 - triforce piece
|
||||||
|
dw $2955 ; 05 - safety - plus
|
||||||
|
dw $2953 ; 06 - less important item - small chest
|
||||||
|
dw $2957 ; 07 - map
|
||||||
|
dw $2D56 ; 08 - compass
|
||||||
|
dw $2950 ; 09 - small key
|
||||||
|
dw $2951 ; 0A - big key
|
||||||
|
dw $295A ; 0B - important inventory item - big chest
|
||||||
|
dw $2D58 ; 0C - pendant
|
||||||
|
dw $2D59 ; 0D - crystal
|
||||||
|
dw $2952 ; 0E - triforce piece
|
||||||
|
dw $295B ; 0F - triforce
|
||||||
|
|
||||||
|
; $B9FB60
|
||||||
|
|
||||||
warnpc $B9FE00
|
warnpc $B9FE00
|
||||||
org $B9FE00
|
org $B9FE00
|
||||||
@@ -190,7 +209,11 @@ ShowItems:
|
|||||||
.visited_tile
|
.visited_tile
|
||||||
db $01
|
db $01
|
||||||
.reserved
|
.reserved
|
||||||
skip 4
|
skip 2
|
||||||
|
.hud_cap
|
||||||
|
db $FF
|
||||||
|
.cave_cap
|
||||||
|
db $01
|
||||||
warnpc $B9FF10
|
warnpc $B9FF10
|
||||||
|
|
||||||
org $B9FF10
|
org $B9FF10
|
||||||
@@ -206,3 +229,7 @@ ItemSources:
|
|||||||
; $B9FF11
|
; $B9FF11
|
||||||
AlwaysShowCompass:
|
AlwaysShowCompass:
|
||||||
db $01
|
db $01
|
||||||
|
|
||||||
|
; $B9FF12
|
||||||
|
ShowLootInHUD:
|
||||||
|
db $01
|
||||||
|
|||||||
+3
-1
@@ -12,7 +12,9 @@ db $01
|
|||||||
GKRomVersion:
|
GKRomVersion:
|
||||||
; $01 = Dungeon Maps
|
; $01 = Dungeon Maps
|
||||||
; .., $01 = Dark rooms don't show on map from visition
|
; .., $01 = Dark rooms don't show on map from visition
|
||||||
db $01, $01, $00
|
; .., $02 = OW Fog and Grid modes
|
||||||
|
; .., $03 = Loot level of current supertile in HUD
|
||||||
|
db $01, $03, $00
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ JSL AddBonkTremors : NOP #4
|
|||||||
; Bonk Breakable Walls
|
; Bonk Breakable Walls
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $81CF8E ; CF8E <- Bank01.asm : 11641 (LDA $0372 : AND.w #$00FF)
|
org $81CF8E ; CF8E <- Bank01.asm : 11641 (LDA $0372 : AND.w #$00FF)
|
||||||
JSL BonkBreakableWall : NOP #2
|
JSL ValidDashCheck : NOP #2
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -139,6 +139,11 @@ GravestoneHook_continue:
|
|||||||
org $87C106
|
org $87C106
|
||||||
moveGravestone:
|
moveGravestone:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
org $899A30
|
||||||
|
JSL ValidDashCheck : NOP #2
|
||||||
|
org $899A3A
|
||||||
|
JSL ValidDashCheck : NOP #2
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Jump Down Ledge
|
; Jump Down Ledge
|
||||||
@@ -2102,6 +2107,11 @@ JSL FlipperScrollWarp
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;org $878F51 ; <- 38F51 - Bank07.asm:2444 (JSR $AE54 ; $3AE54 IN ROM)
|
;org $878F51 ; <- 38F51 - Bank07.asm:2444 (JSR $AE54 ; $3AE54 IN ROM)
|
||||||
;JSL OnEnterWater : NOP
|
;JSL OnEnterWater : NOP
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; Fixes getting bumped while swimming, unable to screen transition
|
||||||
|
org $879632
|
||||||
|
LinkState_Swimming:
|
||||||
|
JSL FixSwimBump
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Floodgate Softlock Fix
|
; Floodgate Softlock Fix
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -2748,6 +2758,13 @@ JSL MimicDirection
|
|||||||
org $828068
|
org $828068
|
||||||
JSL AdjustDefaultGraphics
|
JSL AdjustDefaultGraphics
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; Dungeon Indicator VRAM overwrite
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $828190
|
||||||
|
JSL LoadDungeonIndicator
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Special Weapons Modes
|
; Special Weapons Modes
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -165,6 +165,7 @@ AddInventory:
|
|||||||
LDA.l !MULTIWORLD_RECEIVING_ITEM : BNE .done
|
LDA.l !MULTIWORLD_RECEIVING_ITEM : BNE .done
|
||||||
REP #$30
|
REP #$30
|
||||||
LDA.l TotalItemCounter : INC : TAY
|
LDA.l TotalItemCounter : INC : TAY
|
||||||
|
JSL UpdateLootHUD
|
||||||
LDA.l BootsEquipment : AND.w #$00FF : BNE +
|
LDA.l BootsEquipment : AND.w #$00FF : BNE +
|
||||||
TYA : STA.l PreBootsLocations
|
TYA : STA.l PreBootsLocations
|
||||||
+
|
+
|
||||||
|
|||||||
@@ -89,7 +89,8 @@ org $80FDEE
|
|||||||
InitializeMirrorHDMA:
|
InitializeMirrorHDMA:
|
||||||
|
|
||||||
org $89D62E
|
org $89D62E
|
||||||
UWSpritesPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
;commenting out since this address can move
|
||||||
|
;UWSpritesPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
||||||
|
|
||||||
if !FEATURE_FIX_BASEROM
|
if !FEATURE_FIX_BASEROM
|
||||||
org $81DB67
|
org $81DB67
|
||||||
@@ -220,7 +221,8 @@ RevealPotItem:
|
|||||||
STZ.w SpawnedItemIsMultiWorld
|
STZ.w SpawnedItemIsMultiWorld
|
||||||
BIT.b Scrap08
|
BIT.b Scrap08
|
||||||
BVS LoadMultiWorldPotItem
|
BVS LoadMultiWorldPotItem
|
||||||
BMI LoadMajorPotItem
|
BPL .normal_secret
|
||||||
|
JMP LoadMajorPotItem
|
||||||
|
|
||||||
.normal_secret
|
.normal_secret
|
||||||
STA.b Scrap08
|
STA.b Scrap08
|
||||||
@@ -241,6 +243,7 @@ RevealPotItem:
|
|||||||
; Could increment GT Tower Pre Big Key but we aren't showing that stat right now
|
; Could increment GT Tower Pre Big Key but we aren't showing that stat right now
|
||||||
+ REP #$10
|
+ REP #$10
|
||||||
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
|
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
|
||||||
|
JSL UpdateLootHUD
|
||||||
LDA.w #$0001 : STA.l UpdateHUDFlag
|
LDA.w #$0001 : STA.l UpdateHUDFlag
|
||||||
.obtained
|
.obtained
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
@@ -340,6 +343,7 @@ IncrementCountsForSubstitute:
|
|||||||
; Could increment GT Tower Pre Big Key but we aren't showing that stat right now
|
; Could increment GT Tower Pre Big Key but we aren't showing that stat right now
|
||||||
+
|
+
|
||||||
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
|
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter ; Increment Item Total
|
||||||
|
JSL UpdateLootHUD
|
||||||
LDA.w #$0001 : STA.l UpdateHUDFlag
|
LDA.w #$0001 : STA.l UpdateHUDFlag
|
||||||
.obtained
|
.obtained
|
||||||
SEP #$30 : PLX
|
SEP #$30 : PLX
|
||||||
@@ -356,7 +360,7 @@ ClearSpriteData:
|
|||||||
STZ.w SprSourceItemId, X : STZ.w SprItemReceipt, X : STZ.w SprItemMWPlayer, X
|
STZ.w SprSourceItemId, X : STZ.w SprItemReceipt, X : STZ.w SprItemMWPlayer, X
|
||||||
STZ.w SprRedrawFlag, X
|
STZ.w SprRedrawFlag, X
|
||||||
DEX : BPL .loop
|
DEX : BPL .loop
|
||||||
JSR SetupEnemyDropIndicator
|
JSL UpdateLootHUD
|
||||||
PLX
|
PLX
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
@@ -403,7 +407,7 @@ SetupEnemyDropIndicator:
|
|||||||
|
|
||||||
.done
|
.done
|
||||||
SEP #$20
|
SEP #$20
|
||||||
RTS
|
RTL
|
||||||
|
|
||||||
|
|
||||||
; Runs during sprite load of the room
|
; Runs during sprite load of the room
|
||||||
@@ -570,7 +574,7 @@ IncrementCountForMinor:
|
|||||||
LDA.l SpriteDropData, X : BIT.b Scrap0A : BNE .obtained
|
LDA.l SpriteDropData, X : BIT.b Scrap0A : BNE .obtained
|
||||||
ORA.b Scrap0A : STA.l SpriteDropData, X
|
ORA.b Scrap0A : STA.l SpriteDropData, X
|
||||||
SEP #$10
|
SEP #$10
|
||||||
JSR SetupEnemyDropIndicator
|
JSL UpdateLootHUD
|
||||||
REP #$20
|
REP #$20
|
||||||
LDX.w DungeonID : CPX.b #$FF : BEQ +
|
LDX.w DungeonID : CPX.b #$FF : BEQ +
|
||||||
CPX.b #$00 : BNE ++
|
CPX.b #$00 : BNE ++
|
||||||
@@ -626,10 +630,10 @@ MarkSRAMForItem:
|
|||||||
TYX
|
TYX
|
||||||
LDA.w SpawnedItemFlag : CMP.w #$0001 : BEQ +
|
LDA.w SpawnedItemFlag : CMP.w #$0001 : BEQ +
|
||||||
LDA.l SpriteDropData, X : ORA.b Scrap00 : STA.l SpriteDropData, X
|
LDA.l SpriteDropData, X : ORA.b Scrap00 : STA.l SpriteDropData, X
|
||||||
SEP #$10 : JSR SetupEnemyDropIndicator
|
|
||||||
BRA .end
|
BRA .end
|
||||||
+ LDA.l RoomPotData, X : ORA.b Scrap00 : STA.l RoomPotData, X
|
+ LDA.l RoomPotData, X : ORA.b Scrap00 : STA.l RoomPotData, X
|
||||||
.end
|
.end
|
||||||
|
JSL UpdateLootHUD
|
||||||
SEP #$30 : PLY : PLX
|
SEP #$30 : PLY : PLX
|
||||||
LDA.w RoomItemsTaken
|
LDA.w RoomItemsTaken
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2
-2
@@ -9,7 +9,7 @@ UploadMenuOnlyIcons:
|
|||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #MenuOnlyIcons : STA.w $4342
|
LDA.w #MenuOnlyIcons : STA.w $4342
|
||||||
LDA.w #$1801 : STA.w $4340
|
LDA.w #$1801 : STA.w $4340
|
||||||
LDA.w #$0240 : STA.w $4345
|
LDA.w #$0310 : STA.w $4345
|
||||||
LDA.w #$0F800>>1 : STA.w $2116
|
LDA.w #$0F800>>1 : STA.w $2116
|
||||||
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
@@ -20,4 +20,4 @@ UploadMenuOnlyIcons:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
MenuOnlyIcons:
|
MenuOnlyIcons:
|
||||||
incbin "drfont.2bpp"
|
incbin "drfont.2bpp"
|
||||||
|
|||||||
+145
-23
@@ -40,7 +40,7 @@ dw $0000
|
|||||||
|
|
||||||
warnpc $8ABE2E
|
warnpc $8ABE2E
|
||||||
org $8ABE2E
|
org $8ABE2E
|
||||||
; located posx/posy, dislocated posx/posy, prize pox/posy
|
; located posx/posy, dislocated posx/posy, prize posx/posy
|
||||||
; located = proper location of icon (default: if you have map)
|
; located = proper location of icon (default: if you have map)
|
||||||
; dislocated = location of icon if proper location is hidden from player
|
; dislocated = location of icon if proper location is hidden from player
|
||||||
; highest bit on first posx indicates which world it should show in
|
; highest bit on first posx indicates which world it should show in
|
||||||
@@ -49,27 +49,27 @@ WorldMapIcon_pos:
|
|||||||
.hc
|
.hc
|
||||||
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
||||||
.ep
|
.ep
|
||||||
dw $0F31, $0620, $FF00, $FF00, $0F31, $0620
|
dw $0F40, $0660, $FF00, $FF00, $0F40, $0660
|
||||||
.dp
|
.dp
|
||||||
dw $0108, $0D70, $FF00, $FF00, $0108, $0D70
|
dw $0140, $0D00, $FF00, $FF00, $0140, $0D00
|
||||||
.at
|
.at
|
||||||
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
||||||
.sp
|
.sp
|
||||||
dw $8759, $0ED0, $FF00, $FF00, $8759, $0ED0
|
dw $8778, $0F50, $FF00, $FF00, $8778, $0F50
|
||||||
.pod
|
.pod
|
||||||
dw $8F40, $0620, $FF00, $FF00, $8F40, $0620
|
dw $8F40, $0660, $FF00, $FF00, $8F40, $0660
|
||||||
.mm
|
.mm
|
||||||
dw $8100, $0CA0, $FF00, $FF00, $8100, $0CA0
|
dw $8148, $0D00, $FF00, $FF00, $8148, $0D00
|
||||||
.sw
|
.sw
|
||||||
dw $8082, $00B0, $FF00, $FF00, $8082, $00B0
|
dw $80B0, $00C0, $FF00, $FF00, $80B0, $00C0
|
||||||
.ip
|
.ip
|
||||||
dw $8CA0, $0DA0, $FF00, $FF00, $8CA0, $0DA0
|
dw $8CA0, $0E00, $FF00, $FF00, $8CA0, $0E00
|
||||||
.toh
|
.toh
|
||||||
dw $08D0, $0080, $FF00, $FF00, $08D0, $0080
|
dw $0900, $0100, $FF00, $FF00, $0900, $0100
|
||||||
.tt
|
.tt
|
||||||
dw $81D0, $0780, $FF00, $FF00, $81D0, $0780
|
dw $81F8, $0800, $FF00, $FF00, $81F8, $0800
|
||||||
.tr
|
.tr
|
||||||
dw $8F11, $0103, $FF00, $FF00, $8F11, $0103
|
dw $8F20, $0100, $FF00, $FF00, $8F20, $0100
|
||||||
.gt
|
.gt
|
||||||
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
dw $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
|
||||||
|
|
||||||
@@ -262,8 +262,8 @@ DrawPrizesOverride:
|
|||||||
|
|
||||||
; determine if draw and/or continue
|
; determine if draw and/or continue
|
||||||
JSR WorldMap_ValidateCoords : BCS .advance
|
JSR WorldMap_ValidateCoords : BCS .advance
|
||||||
JSR WorldMap_DrawTileOverlay
|
|
||||||
JSR WorldMap_DrawTile
|
JSR WorldMap_DrawTile
|
||||||
|
JSR WorldMap_DrawTileOverlay
|
||||||
.advance
|
.advance
|
||||||
LDY.b Scrap05 : DEY #2 : BMI + : JMP .next_dungeon : +
|
LDY.b Scrap05 : DEY #2 : BMI + : JMP .next_dungeon : +
|
||||||
PLB
|
PLB
|
||||||
@@ -321,24 +321,35 @@ RTS
|
|||||||
|
|
||||||
WorldMap_DrawTile:
|
WorldMap_DrawTile:
|
||||||
LDA.b Scrap00 : PHA
|
LDA.b Scrap00 : PHA
|
||||||
SEP #$20
|
LDA.l $7EC10A : BIT.w #$4000 : SEP #$20 : BNE .raw_coords ; use raw OAM coordinates
|
||||||
|
JSR WorldMap_CalculateOAMCoordinates
|
||||||
|
BCS .apply_offsets
|
||||||
|
REP #$20
|
||||||
|
BRA .exit
|
||||||
|
.raw_coords
|
||||||
|
STA.b Scrap0E
|
||||||
|
LDA.l $7EC108 : STA.b Scrap0F
|
||||||
|
.apply_offsets
|
||||||
|
LDX.b Scrap0A : BNE .aligned ; prize number/overlay: no offset
|
||||||
|
LDX.b Scrap0B : BEQ +
|
||||||
|
; 16x16 sprite: -8 pixels
|
||||||
|
LDA.b Scrap0E : SEC : SBC.b #$08 : STA.b Scrap0E
|
||||||
|
LDA.b Scrap0F : SBC.b #$08 : STA.b Scrap0F
|
||||||
|
BRA .aligned
|
||||||
|
+
|
||||||
|
; 8x8 sprite: -4 pixels
|
||||||
|
LDA.b Scrap0E : SEC : SBC.b #$04 : STA.b Scrap0E
|
||||||
|
LDA.b Scrap0F : SBC.b #$04 : STA.b Scrap0F
|
||||||
|
.aligned
|
||||||
LDX.b Scrap0B : TXA : STA.b (OAMPtr+2)
|
LDX.b Scrap0B : TXA : STA.b (OAMPtr+2)
|
||||||
INC.b OAMPtr+2
|
INC.b OAMPtr+2
|
||||||
JSR WorldMap_CalculateOAMCoordinates
|
|
||||||
LDX.b Scrap0A : BEQ +
|
|
||||||
LDA.b Scrap0E : CLC : ADC.b #$04 : STA.b Scrap0E
|
|
||||||
LDA.b Scrap0F : CLC : ADC.b #$04 : STA.b Scrap0F
|
|
||||||
+
|
|
||||||
LDX.b Scrap0B : BEQ +
|
|
||||||
LDA.b Scrap0E : SEC : SBC.b #$04 : STA.b Scrap0E
|
|
||||||
LDA.b Scrap0F : SEC : SBC.b #$04 : STA.b Scrap0F
|
|
||||||
+
|
|
||||||
REP #$20
|
REP #$20
|
||||||
PLA : STA.b Scrap00
|
|
||||||
LDA.b Scrap0E : STA.b (OAMPtr)
|
LDA.b Scrap0E : STA.b (OAMPtr)
|
||||||
INC.b OAMPtr : INC.b OAMPtr
|
INC.b OAMPtr : INC.b OAMPtr
|
||||||
LDA.b Scrap0C : STA.b (OAMPtr)
|
LDA.b Scrap0C : STA.b (OAMPtr)
|
||||||
INC.b OAMPtr : INC.b OAMPtr
|
INC.b OAMPtr : INC.b OAMPtr
|
||||||
|
.exit
|
||||||
|
PLA : STA.b Scrap00
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
; Y - dungeon index
|
; Y - dungeon index
|
||||||
@@ -423,6 +434,117 @@ WorldMap_CheckPrizeCollected:
|
|||||||
RTS
|
RTS
|
||||||
|
|
||||||
warnpc $8AC3B1
|
warnpc $8AC3B1
|
||||||
|
|
||||||
|
org $8AC3B6
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
; Y coordinate calculation: Quadratic approximation
|
||||||
|
; Formula: Y_oam = 0x16 + (Y * 118 >> 12) + ((Y>>4)^2 * 49 >> 8)
|
||||||
|
; Accurate to within ±1.5 pixels across entire range
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
REP #$20
|
||||||
|
LDA.l $7EC108 : ASL #4 ; world Y coordinate
|
||||||
|
PHA
|
||||||
|
; calculate linear term: (Y * 118) >> 12
|
||||||
|
SEP #$20
|
||||||
|
LDA.b #$76
|
||||||
|
JSR WorldMap_MultiplyAxB ; (Y>>4) * 118
|
||||||
|
REP #$20
|
||||||
|
STA.b Scrap00 ; linear term stored at high byte (Scrap01)
|
||||||
|
|
||||||
|
; calculate quadratic term: ((Y>>4)^2 * 49) >> 8
|
||||||
|
LDA.b 1,S
|
||||||
|
SEP #$20
|
||||||
|
XBA : TAX : XBA : TXA
|
||||||
|
JSR WorldMap_MultiplyAxB ; (Y>>4) ^ 2
|
||||||
|
LDA.b #$31
|
||||||
|
JSR WorldMap_MultiplyAxB ; multiply by 49
|
||||||
|
XBA ; quadratic term
|
||||||
|
|
||||||
|
; combine: 0x16 + linear_term + quadratic_term
|
||||||
|
CLC : ADC.b Scrap01 ; add linear term
|
||||||
|
ADC.b #$16 ; add fixed offset
|
||||||
|
STA.b Scrap0F
|
||||||
|
REP #$20
|
||||||
|
PLA ; world Y coordinate
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
; Calculate half_width for perspective: 91 + (Y_shifted * 28 / 256)
|
||||||
|
; The world map appears wider at the bottom than at the top, simulating perspective
|
||||||
|
; Top (Y=0): X range 0x26-0xDC (half-width: 91), Bottom (Y=FFF): X range 0x08-0xF6 (half-width: 119)
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
SEP #$20
|
||||||
|
LDA.b #$1C ; width increase factor
|
||||||
|
JSR WorldMap_MultiplyAxB
|
||||||
|
XBA : CLC : ADC.b #$5B ; add fixed half-width
|
||||||
|
STA.b Scrap00
|
||||||
|
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
; Calculate X offset: X_offset = (X_from_center * half_width * 2) / 256
|
||||||
|
; where X_from_center = (world_X >> 4) - 128
|
||||||
|
; The center X is at 129 (0x81)
|
||||||
|
; ---------------------------------------------------------------------------------------------------
|
||||||
|
REP #$20
|
||||||
|
LDA.l $7EC10A : LSR #4 ; world X coordinate
|
||||||
|
SEP #$20
|
||||||
|
SEC : SBC.b #$80 ; subtract 128 (center point)
|
||||||
|
PHP ; preserve carry
|
||||||
|
BPL + : EOR.b #$FF : INC : + ; absolute value
|
||||||
|
PHA
|
||||||
|
LDA.b Scrap00 : ASL : XBA ; half-width x 2
|
||||||
|
PLA
|
||||||
|
JSR WorldMap_MultiplyAxB
|
||||||
|
XBA
|
||||||
|
PLP : BCS +
|
||||||
|
STA.b Scrap00
|
||||||
|
LDA.b #$81 : SEC : SBC.b Scrap00 ; center X position - offset
|
||||||
|
BRA .store_and_exit
|
||||||
|
+ CLC : ADC.b #$81 ; center X position + offset
|
||||||
|
|
||||||
|
.store_and_exit
|
||||||
|
STA.b Scrap0E
|
||||||
|
SEP #$30
|
||||||
|
JMP WorldMap_CalculateOAMCoordinates_exit_successfully
|
||||||
|
|
||||||
|
warnpc $8AC433
|
||||||
|
|
||||||
|
; most of this function is copied from the original, but rearranged
|
||||||
|
org $8AB7F3
|
||||||
|
FluteMenu_HandleSprites:
|
||||||
|
LDA.l $7EC108 : PHA
|
||||||
|
LDA.l $7EC109 : PHA
|
||||||
|
LDA.l $7EC10A : PHA
|
||||||
|
LDA.l $7EC10B : PHA
|
||||||
|
JSL FluteMenu_MoveLinkSprite ; override vanilla (LDA.b $1A : AND.b #$10)
|
||||||
|
BEQ .continue
|
||||||
|
JSR WorldMap_CalculateOAMCoordinates : BCC .continue
|
||||||
|
LDA.b Scrap0E : SEC : SBC.b #$04 : STA.b Scrap0E
|
||||||
|
LDA.b Scrap0F : SEC : SBC.b #$04 : STA.b Scrap0F
|
||||||
|
LDA.b #$00 : STA.b Scrap0D
|
||||||
|
LDA.b #$3E : STA.b Scrap0C
|
||||||
|
JSL OWMapFluteCancelIcon ; override vanilla (LDA.b #$02 : STA.b Scrap0B)
|
||||||
|
LDX.b #$10 : JSR WorldMap_HandleSpriteBlink
|
||||||
|
.continue
|
||||||
|
warnpc $8AB831
|
||||||
|
|
||||||
|
; most of this function is copied from the original, but rearranged
|
||||||
|
org $8ABF78
|
||||||
|
WorldMap_HandleSprites:
|
||||||
|
LDA.l $7EC108 : PHA
|
||||||
|
LDA.l $7EC109 : PHA
|
||||||
|
LDA.l $7EC10A : PHA
|
||||||
|
LDA.l $7EC10B : PHA
|
||||||
|
JSL WorldMap_SkipHandleSprites ; override vanilla (LDA.b $1A : AND.b #$10)
|
||||||
|
BEQ .continue
|
||||||
|
JSR WorldMap_CalculateOAMCoordinates : BCC .continue
|
||||||
|
LDA.b Scrap0E : SEC : SBC.b #$04 : STA.b Scrap0E
|
||||||
|
LDA.b Scrap0F : SEC : SBC.b #$04 : STA.b Scrap0F
|
||||||
|
LDA.b #$00 : STA.b Scrap0D
|
||||||
|
LDA.b #$3E : STA.b Scrap0C
|
||||||
|
LDA.b #$02 : STA.b Scrap0B
|
||||||
|
LDX.b #$00 : JSR WorldMap_HandleSpriteBlink
|
||||||
|
.continue
|
||||||
|
warnpc $8ABFB6
|
||||||
|
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
WorldMap_LoadChrHalfSlot:
|
WorldMap_LoadChrHalfSlot:
|
||||||
|
|||||||
@@ -386,6 +386,7 @@ RTS
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
DrawMapCounts:
|
DrawMapCounts:
|
||||||
LDA.l MapHUDMode : BEQ .done
|
LDA.l MapHUDMode : BEQ .done
|
||||||
|
LDA.l GenericKeys : BNE .done ; generator don't have an accurrate count of key doors in this case
|
||||||
|
|
||||||
; no map needed if this bit is set
|
; no map needed if this bit is set
|
||||||
BIT.b #$02 : BNE .draw_map_count
|
BIT.b #$02 : BNE .draw_map_count
|
||||||
|
|||||||
+2
-2
@@ -1190,7 +1190,7 @@ MaybeFlagCompassTotalPickup:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
MaybeFlagMapTotalPickup:
|
MaybeFlagMapTotalPickup:
|
||||||
; LDA.l MapHUDMode : AND.b #$0F : BEQ .done
|
LDA.l MapHUDMode : AND.b #$0F : BEQ .done
|
||||||
LDA.w DungeonID : BMI .done
|
LDA.w DungeonID : BMI .done
|
||||||
LDA.w ItemReceiptID : CMP.b #$33 : BEQ .set_flag
|
LDA.w ItemReceiptID : CMP.b #$33 : BEQ .set_flag
|
||||||
REP #$20
|
REP #$20
|
||||||
@@ -1212,7 +1212,7 @@ MaybeFlagDungeonTotalsEntrance:
|
|||||||
LDA.l CompassMode : AND.w #$000F : BEQ .maps ; Skip if we're not showing compass counts
|
LDA.l CompassMode : AND.w #$000F : BEQ .maps ; Skip if we're not showing compass counts
|
||||||
JSR FlagCompassCount
|
JSR FlagCompassCount
|
||||||
.maps
|
.maps
|
||||||
LDA.l MapHUDMode : AND.w #$000F
|
LDA.l MapHUDMode : AND.w #$000F : BEQ .done
|
||||||
LDX.w DungeonID
|
LDX.w DungeonID
|
||||||
JSR FlagMapCount
|
JSR FlagMapCount
|
||||||
.done
|
.done
|
||||||
|
|||||||
+330
-78
@@ -6,18 +6,18 @@ OWFlags:
|
|||||||
dw 0
|
dw 0
|
||||||
OWReserved:
|
OWReserved:
|
||||||
dw 0
|
dw 0
|
||||||
|
OWFog:
|
||||||
|
db 0 ; 0: disabled - 1: fog clears after visiting either world version of a screen - 2: fog clears after visiting the current world version of a screen
|
||||||
org $aa8010
|
org $aa8010
|
||||||
OWVersionInfo:
|
OWVersionInfo:
|
||||||
dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000
|
dw $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000
|
||||||
|
|
||||||
;Hooks
|
;Hooks
|
||||||
org $82a929
|
org $82a92C
|
||||||
OWDetectTransitionReturn:
|
JSL OWDetectEdgeTransition ; JSL Link_CheckForEdgeScreenTransition
|
||||||
|
|
||||||
org $82a939
|
org $82a936
|
||||||
OverworldHandleTransitions_SpecialTrigger:
|
OverworldHandleTransitions_PerformEdgeTransition:
|
||||||
JSL OWDetectEdgeTransition
|
|
||||||
BCS OWDetectTransitionReturn
|
|
||||||
|
|
||||||
org $82a999
|
org $82a999
|
||||||
jsl OWEdgeTransition : nop #4 ;LDA $02A4E3,X : ORA $7EF3CA
|
jsl OWEdgeTransition : nop #4 ;LDA $02A4E3,X : ORA $7EF3CA
|
||||||
@@ -78,8 +78,6 @@ org $8ab7af ;LDA $F2 : ORA $F0 : AND #$C0
|
|||||||
jml OWFluteCancel2 : nop
|
jml OWFluteCancel2 : nop
|
||||||
org $8ab90d ;JSL $02E99D
|
org $8ab90d ;JSL $02E99D
|
||||||
jsl OWFluteCancel
|
jsl OWFluteCancel
|
||||||
org $8ab816
|
|
||||||
JSL OWMapFluteCancelIcon
|
|
||||||
|
|
||||||
; allows Frog sprite to spawn in LW and also allows his friend to spawn in their house
|
; allows Frog sprite to spawn in LW and also allows his friend to spawn in their house
|
||||||
org $868a76 ; < 30a76 - sprite_prep.asm:785 (LDA $7EF3CA : AND.w #$40)
|
org $868a76 ; < 30a76 - sprite_prep.asm:785 (LDA $7EF3CA : AND.w #$40)
|
||||||
@@ -106,20 +104,36 @@ jsl OWOldManSpeed
|
|||||||
org $8aba6c ; < ? - Bank0a.asm:474 ()
|
org $8aba6c ; < ? - Bank0a.asm:474 ()
|
||||||
jsl OWMapWorldCheck16 : nop
|
jsl OWMapWorldCheck16 : nop
|
||||||
|
|
||||||
; Mixed Overworld Map
|
; Custom Overworld Map
|
||||||
|
org $8ABA52
|
||||||
|
JSL OverworldMap_InitGfx_InitScrap
|
||||||
|
|
||||||
org $8ABA99
|
org $8ABA99
|
||||||
WorldMap_LoadDarkWorldMap:
|
WorldMap_LoadDarkWorldMap:
|
||||||
LDA.b GameMode : CMP.b #$14 ; attract module
|
LDA.b GameMode : CMP.b #$14 ; attract module
|
||||||
BEQ .vanilla_light
|
BEQ .vanilla_light
|
||||||
LDA.l OWMode+1 : AND.b #!FLAG_OW_MIXED : BNE .mixed
|
LDA.l OWFlags : AND.b #!FLAG_OW_CUSTOM_MAP : BNE .custom
|
||||||
LDA.b OverworldIndex : AND.b #$40
|
LDA.b OverworldIndex : AND.b #$40
|
||||||
BEQ .vanilla_light
|
BEQ .vanilla_light
|
||||||
.mixed
|
.custom
|
||||||
PHB : PHK : PLB
|
STZ.b ScrapBuffer72 ; clear tile swap flag
|
||||||
JSL LoadMapDarkOrMixed
|
JSL LoadMapDarkOrCustom_long
|
||||||
PLB
|
NOP #2
|
||||||
|
warnpc $8ABAB5
|
||||||
.vanilla_light ; $0ABAB5
|
.vanilla_light ; $0ABAB5
|
||||||
|
|
||||||
|
org $8ABD12
|
||||||
|
JSL MoveZoomedInPositionY
|
||||||
|
org $8ABD2F
|
||||||
|
JSL MoveZoomedInPositionX
|
||||||
|
|
||||||
|
org $8ABB32
|
||||||
|
JSL LoadMapOppositeWorld
|
||||||
|
|
||||||
|
org $8ABFF0
|
||||||
|
JSL MoveMirrorPortalMapSprite
|
||||||
|
; Could insert similar hooks at $8AB860 and $8AB8AC for flute spots
|
||||||
|
|
||||||
;(replacing -> LDA $8A : AND.b #$40)
|
;(replacing -> LDA $8A : AND.b #$40)
|
||||||
org $80d8c4 ; < ? - Bank00.asm:4068 ()
|
org $80d8c4 ; < ? - Bank00.asm:4068 ()
|
||||||
jsl OWWorldCheck
|
jsl OWWorldCheck
|
||||||
@@ -227,6 +241,7 @@ OWMapWorldCheck16:
|
|||||||
{
|
{
|
||||||
lda.b GameMode : cmp.w #$0014 : beq .return ; attract module, return with Z flag cleared
|
lda.b GameMode : cmp.w #$0014 : beq .return ; attract module, return with Z flag cleared
|
||||||
jsl OWWorldCheck16
|
jsl OWWorldCheck16
|
||||||
|
eor.b ScrapBuffer72 ; apply tile swap flag
|
||||||
.return
|
.return
|
||||||
rtl
|
rtl
|
||||||
}
|
}
|
||||||
@@ -341,7 +356,7 @@ OWFluteCancel2:
|
|||||||
}
|
}
|
||||||
OWMapFluteCancelIcon:
|
OWMapFluteCancelIcon:
|
||||||
{
|
{
|
||||||
STA.b Scrap0B : LDX.b #$10 ; what we wrote over
|
LDA.b #$02 : STA.b Scrap0B ; what we wrote over
|
||||||
LDA.l OWFlags+1 : AND.b #$01 : BEQ .return
|
LDA.l OWFlags+1 : AND.b #$01 : BEQ .return
|
||||||
LDA.b GameSubMode : CMP.b #$0A : BNE .return
|
LDA.b GameSubMode : CMP.b #$0A : BNE .return
|
||||||
LDA.b FrameCounter : AND.b #$10 : BNE .return
|
LDA.b FrameCounter : AND.b #$10 : BNE .return
|
||||||
@@ -387,51 +402,110 @@ OWMarkVisited:
|
|||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadMapDarkOrMixed:
|
LoadMapDarkOrCustom:
|
||||||
{
|
{
|
||||||
CMP.b #!FLAG_OW_MIXED : REP #$30 : BEQ .mixed
|
CMP.b #!FLAG_OW_CUSTOM_MAP : REP #$30 : BEQ .custom
|
||||||
LDX.w #$03FE ; draw vanilla Dark World (what we wrote over)
|
LDX.w #$03FE ; draw vanilla Dark World (what we wrote over)
|
||||||
.copy_next
|
.copy_next
|
||||||
LDA.w WorldMap_DarkWorldTilemap,X : STA.w GFXStripes,X
|
LDA.w WorldMap_DarkWorldTilemap,X : STA.w GFXStripes,X
|
||||||
DEX : DEX : BPL .copy_next
|
DEX : DEX : BPL .copy_next
|
||||||
BRL .end
|
BRL .end
|
||||||
.mixed
|
.custom
|
||||||
LDX.b OverworldIndex
|
LDX.b OverworldIndex
|
||||||
LDA.l OWTileWorldAssoc,X
|
LDA.l OWTileWorldAssoc,X
|
||||||
STA.b Scrap00
|
|
||||||
LDY.w #$139C
|
|
||||||
LDX.w #$003F
|
|
||||||
.next_screen
|
|
||||||
PHX
|
|
||||||
LDA.l OWTileWorldAssoc,X
|
|
||||||
EOR.b Scrap00
|
|
||||||
AND.w #$0040
|
AND.w #$0040
|
||||||
BEQ .light
|
EOR.b ScrapBuffer72 ; apply tile swap flag
|
||||||
TYX : BRA .copy_screen
|
BEQ .draw_lw
|
||||||
.light
|
LDA.w #OWMapGridDark
|
||||||
TXA : AND.w #$0024 : LSR : TAX
|
BRA .draw_dw
|
||||||
TYA : SEC : SBC.l LWQuadrantOffsets,X
|
.draw_lw
|
||||||
TYX : TAY
|
LDA.w #OWMapGridLight
|
||||||
.copy_screen ; more efficient to have X on the right side
|
.draw_dw
|
||||||
LDA.w $C739+$00,Y : STA.b $00,X
|
STA.b Scrap00
|
||||||
LDA.w $C739+$02,Y : STA.b $02,X
|
LDA.w #OWMapGridLight>>16 ; current program bank
|
||||||
LDA.w $C739+$20,Y : STA.b $20,X
|
STA.b Scrap02
|
||||||
LDA.w $C739+$22,Y : STA.b $22,X
|
LDX.w #$139C
|
||||||
LDA.w $C739+$40,Y : STA.b $40,X
|
LDY.w #$003F
|
||||||
LDA.w $C739+$42,Y : STA.b $42,X
|
.next_cell
|
||||||
LDA.w $C739+$60,Y : STA.b $60,X
|
PHY
|
||||||
LDA.w $C739+$62,Y : STA.b $62,X
|
JSR GetOWMapTilemapOffsetToCopy
|
||||||
TXY : PLX
|
.copy_cell ; more efficient to have X on the right side
|
||||||
DEY : DEY : DEY : DEY ; move one screen left
|
TAY
|
||||||
TXA : AND.w #$0007 : BNE .same_row
|
LDA.w WorldMap_LightWorldTilemap+$00,Y : STA.b $00,X
|
||||||
TYA : SEC : SBC.w #$0060 : TAY ; move one screen row up
|
LDA.w WorldMap_LightWorldTilemap+$02,Y : STA.b $02,X
|
||||||
|
LDA.w WorldMap_LightWorldTilemap+$20,Y : STA.b $20,X
|
||||||
|
LDA.w WorldMap_LightWorldTilemap+$22,Y : STA.b $22,X
|
||||||
|
LDA.w WorldMap_LightWorldTilemap+$40,Y : STA.b $40,X
|
||||||
|
LDA.w WorldMap_LightWorldTilemap+$42,Y : STA.b $42,X
|
||||||
|
LDA.w WorldMap_LightWorldTilemap+$60,Y : STA.b $60,X
|
||||||
|
LDA.w WorldMap_LightWorldTilemap+$62,Y : STA.b $62,X
|
||||||
|
PLY
|
||||||
|
DEX : DEX : DEX : DEX ; move one screen left
|
||||||
|
TYA : AND.w #$0007 : BNE .same_row
|
||||||
|
TXA : SEC : SBC.w #$0060 : TAX ; move one screen row up
|
||||||
.same_row
|
.same_row
|
||||||
DEX
|
DEY
|
||||||
BPL .next_screen
|
BPL .next_cell
|
||||||
.end
|
.end
|
||||||
SEP #$30
|
SEP #$30
|
||||||
LDA.b #$15 : STA.b NMIINCR ; what we wrote over
|
LDA.b #$15 : STA.b NMIINCR ; what we wrote over
|
||||||
RTL
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
|
GetOWMapTilemapOffsetToCopy:
|
||||||
|
{
|
||||||
|
LDA.l OWFog : AND.w #$00FF
|
||||||
|
CMP.w #$0001 : BEQ .parallel_fog
|
||||||
|
CMP.w #$0002 : BNE .no_fog
|
||||||
|
|
||||||
|
LDA.b [Scrap00],Y : AND.w #$00FF
|
||||||
|
PHX
|
||||||
|
TAX
|
||||||
|
BIT.w #$0040
|
||||||
|
BEQ .light_fog
|
||||||
|
LDA.l Overworld_ActualScreenID-$40,X : ORA.w #$0040
|
||||||
|
BRA .dark_fog
|
||||||
|
.light_fog
|
||||||
|
LDA.l Overworld_ActualScreenID,X
|
||||||
|
.dark_fog
|
||||||
|
AND.w #$00FF
|
||||||
|
TAX
|
||||||
|
LDA.l OverworldEventDataWRAM,X
|
||||||
|
.check_visited_flag
|
||||||
|
PLX
|
||||||
|
AND.w #$0080 : BNE .no_fog
|
||||||
|
LDA.w #($D350-$C739)
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.parallel_fog
|
||||||
|
LDA.b [Scrap00],Y : AND.w #$003F
|
||||||
|
PHX
|
||||||
|
TAX
|
||||||
|
LDA.l Overworld_ActualScreenID,X
|
||||||
|
AND.w #$00FF
|
||||||
|
TAX
|
||||||
|
LDA.l OverworldEventDataWRAM,X
|
||||||
|
ORA.l OverworldEventDataWRAM+$40,X
|
||||||
|
BRA .check_visited_flag
|
||||||
|
|
||||||
|
.no_fog
|
||||||
|
LDA.b [Scrap00],Y : AND.w #$0038 : ASL : ASL : ASL : ASL
|
||||||
|
STA.b Scrap03
|
||||||
|
LDA.b [Scrap00],Y
|
||||||
|
BIT.w #$0040
|
||||||
|
BEQ .light
|
||||||
|
AND.w #$0007
|
||||||
|
ASL : ASL : ADC.w #$1000 : ADC.b Scrap03
|
||||||
|
RTS
|
||||||
|
.light
|
||||||
|
PHX
|
||||||
|
AND.w #$0024 : LSR : TAX
|
||||||
|
LDA.b [Scrap00],Y
|
||||||
|
AND.w #$0007
|
||||||
|
ASL : ASL : ADC.w #$1000 : ADC.b Scrap03
|
||||||
|
SEC : SBC.l LWQuadrantOffsets,X
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
|
||||||
LWQuadrantOffsets:
|
LWQuadrantOffsets:
|
||||||
dw $1000-$0210 ; top left
|
dw $1000-$0210 ; top left
|
||||||
@@ -441,6 +515,143 @@ LoadMapDarkOrMixed:
|
|||||||
dw $0400+$0210 ; bottom right
|
dw $0400+$0210 ; bottom right
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OverworldMap_InitGfx_InitScrap:
|
||||||
|
{
|
||||||
|
STZ.b ScrapBuffer72 ; clear tile swap flag
|
||||||
|
LDA.b #$11 : STA.b MAINDESQ ; what we wrote over
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
LoadMapDarkOrCustom_long:
|
||||||
|
{
|
||||||
|
PHB : LDA.b #WorldMap_DarkWorldTilemap>>16 : PHA : PLB
|
||||||
|
LDA.l OWFlags : AND.b #!FLAG_OW_CUSTOM_MAP
|
||||||
|
JSR LoadMapDarkOrCustom
|
||||||
|
PLB
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
LoadMapOppositeWorld:
|
||||||
|
{
|
||||||
|
LDA.l OWFlags : AND.b #!FLAG_OW_ADJUST_DYNAMIC_MAP_SPRITE_POSITION : BEQ .vanilla
|
||||||
|
LDA.b ScrapBuffer72 : BEQ +
|
||||||
|
LDA.b Joy1B_All : AND.b #$30 : BNE .vanilla
|
||||||
|
STZ.b ScrapBuffer72 ; clear tile swap flag
|
||||||
|
BRA .new_tiles
|
||||||
|
+ LDA.b Joy1B_New : AND.b #$30 : BEQ .vanilla
|
||||||
|
LDA.b #$40 : STA.b ScrapBuffer72 ; set tile swap flag
|
||||||
|
.new_tiles
|
||||||
|
JSL OverworldMap_InitGfx+$10 ; load palette
|
||||||
|
DEC.w SubModuleInterface
|
||||||
|
LDA.b #$0F : STA.b INIDISPQ
|
||||||
|
JSL LoadMapDarkOrCustom_long
|
||||||
|
LDA.b #$24 : STA.w SFX3
|
||||||
|
PLA : PLA : PEA.w $BBAF ; skip everything upon return
|
||||||
|
.vanilla
|
||||||
|
LDA.b Joy1B_New : AND.b #$70 ; what we wrote over
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
FluteMenu_MoveLinkSprite:
|
||||||
|
{
|
||||||
|
JSR MoveMapSprite
|
||||||
|
BRA WorldMap_SkipHandleSprites_vanilla
|
||||||
|
}
|
||||||
|
WorldMap_SkipHandleSprites:
|
||||||
|
{
|
||||||
|
JSR MoveMapSprite : BEQ .vanilla
|
||||||
|
LDA.b ScrapBuffer72 : BEQ .vanilla ; skip draw if no tile swap
|
||||||
|
PLA : PLA : PEA.w $C39B ; exit without drawing sprites
|
||||||
|
RTL
|
||||||
|
.vanilla
|
||||||
|
LDA.b FrameCounter : AND.b #$10 ; what we wrote over
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveMirrorPortalMapSprite:
|
||||||
|
{
|
||||||
|
STA.l $7EC109 ; what we overwrote
|
||||||
|
JSR MoveMapSprite
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveZoomedInPositionY:
|
||||||
|
{
|
||||||
|
LDA.l OWFlags : AND.w #!FLAG_OW_ADJUST_DYNAMIC_MAP_SPRITE_POSITION : BEQ .vanilla
|
||||||
|
SEP #$20
|
||||||
|
JSR MoveMapSprite_Setup
|
||||||
|
JSR MoveMapSprite_GetYCoordHighByte
|
||||||
|
PHA
|
||||||
|
REP #$20
|
||||||
|
LDA.l $7EC108 : XBA
|
||||||
|
SEP #$20
|
||||||
|
PLA : XBA
|
||||||
|
REP #$20
|
||||||
|
RTL
|
||||||
|
.vanilla
|
||||||
|
LDA.l $7EC108 ; what we overwrote
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
MoveZoomedInPositionX:
|
||||||
|
{
|
||||||
|
LDA.l OWFlags : AND.w #!FLAG_OW_ADJUST_DYNAMIC_MAP_SPRITE_POSITION : BEQ .vanilla
|
||||||
|
SEP #$20
|
||||||
|
JSR MoveMapSprite_Setup
|
||||||
|
JSR MoveMapSprite_GetXCoordHighByte
|
||||||
|
PHA
|
||||||
|
REP #$20
|
||||||
|
LDA.l $7EC10A : XBA
|
||||||
|
SEP #$20
|
||||||
|
PLA : XBA
|
||||||
|
REP #$20
|
||||||
|
RTL
|
||||||
|
.vanilla
|
||||||
|
LDA.l $7EC10A ; what we overwrote
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
|
||||||
|
MoveMapSprite:
|
||||||
|
{
|
||||||
|
LDA.l OWFlags : AND.b #!FLAG_OW_ADJUST_DYNAMIC_MAP_SPRITE_POSITION : BEQ .return
|
||||||
|
PHP
|
||||||
|
JSR MoveMapSprite_Setup
|
||||||
|
JSR MoveMapSprite_GetXCoordHighByte : STA.l $7EC10B
|
||||||
|
JSR MoveMapSprite_GetYCoordHighByte : STA.l $7EC109
|
||||||
|
PLP
|
||||||
|
.return
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
MoveMapSprite_Setup:
|
||||||
|
{
|
||||||
|
LDA.l $7EC10B : AND.b #$0E : LSR
|
||||||
|
STA.b Scrap00
|
||||||
|
LDA.l $7EC109 : AND.b #$0E : ASL : ASL
|
||||||
|
ADC.b Scrap00
|
||||||
|
STA.b Scrap00
|
||||||
|
LDX.b OverworldIndex
|
||||||
|
LDA.l OWTileWorldAssoc,X
|
||||||
|
LDX.b Scrap00
|
||||||
|
AND.b #$40
|
||||||
|
BEQ .light
|
||||||
|
LDA.l OWMapGridDarkPositionByAbsolutePosition,X
|
||||||
|
BRA .dark
|
||||||
|
.light
|
||||||
|
LDA.l OWMapGridLightPositionByAbsolutePosition,X
|
||||||
|
.dark
|
||||||
|
TAX
|
||||||
|
AND.b #$07 : ASL
|
||||||
|
STA.b Scrap00
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
MoveMapSprite_GetXCoordHighByte:
|
||||||
|
{
|
||||||
|
LDA.l $7EC10B : AND.b #$01 : ORA.b Scrap00
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
MoveMapSprite_GetYCoordHighByte:
|
||||||
|
{
|
||||||
|
TXA : AND.b #$38 : LSR : LSR : STA.b Scrap00
|
||||||
|
LDA.l $7EC109 : AND.b #$01 : ORA.b Scrap00
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
OWBonkDropPrepSprite:
|
OWBonkDropPrepSprite:
|
||||||
{
|
{
|
||||||
LDA.b IndoorsFlag : BEQ +
|
LDA.b IndoorsFlag : BEQ +
|
||||||
@@ -609,27 +820,26 @@ OWBonkDrops:
|
|||||||
JSL OWBonkSpritePrep
|
JSL OWBonkSpritePrep
|
||||||
|
|
||||||
.mark_collected ; S = Collected, FlagBitmask, X (row + 2)
|
.mark_collected ; S = Collected, FlagBitmask, X (row + 2)
|
||||||
PLA : BNE + ; S = FlagBitmask, X (row + 2)
|
PLA : BEQ + : - : JMP .return : + ; S = FlagBitmask, X (row + 2)
|
||||||
TYX : JSL Sprite_IsOnscreen : BCC +
|
TYX : JSL Sprite_IsOnscreen : BCC -
|
||||||
LDA.b IndoorsFlag : BEQ ++
|
LDA.b IndoorsFlag : BEQ +
|
||||||
LDA.l RoomDataWRAM[$0120].high : ORA.b 1,S : STA.l RoomDataWRAM[$0120].high
|
LDA.l RoomDataWRAM[$0120].high : ORA.b 1,S : STA.l RoomDataWRAM[$0120].high
|
||||||
LDA.w $0400 : ORA.b 1,S : STA.w $0400
|
LDA.w $0400 : ORA.b 1,S : STA.w $0400
|
||||||
BRA .increment_collection
|
BRA .increment_collection
|
||||||
++
|
+
|
||||||
LDA.b OverworldIndex
|
LDA.b OverworldIndex
|
||||||
BIT.b #$40 : BEQ +
|
BIT.b #$40 : BEQ +
|
||||||
LDA.l ProgressIndicator : CMP.b #$02
|
LDA.l ProgressIndicator : CMP.b #$02
|
||||||
LDA.b OverworldIndex : BCS ++ : AND.b #$BF
|
LDA.b OverworldIndex : BCS + : AND.b #$BF
|
||||||
++
|
|
||||||
+
|
+
|
||||||
TAX : LDA.l OverworldEventDataWRAM,X : ORA.b 1,S : STA.l OverworldEventDataWRAM,X
|
TAX : LDA.l OverworldEventDataWRAM,X : ORA.b 1,S : STA.l OverworldEventDataWRAM,X
|
||||||
|
|
||||||
.increment_collection
|
.increment_collection
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter
|
LDA.l TotalItemCounter : INC : STA.l TotalItemCounter
|
||||||
INC.w UpdateHUDFlag
|
|
||||||
SEP #$20
|
SEP #$20
|
||||||
+ BRA .return
|
LDA.b #$01 : STA.l UpdateHUDFlag
|
||||||
|
BRA .return
|
||||||
|
|
||||||
; spawn itemget item
|
; spawn itemget item
|
||||||
.spawn_item ; A = item id ; Y = bonk sprite slot ; S = Collected, FlagBitmask, X (row + 2)
|
.spawn_item ; A = item id ; Y = bonk sprite slot ; S = Collected, FlagBitmask, X (row + 2)
|
||||||
@@ -738,20 +948,29 @@ OWBonkSpritePrep:
|
|||||||
org $aa9000
|
org $aa9000
|
||||||
OWDetectEdgeTransition:
|
OWDetectEdgeTransition:
|
||||||
{
|
{
|
||||||
JSL OWDestroyItemSprites
|
JSL Link_CheckForEdgeScreenTransition ; what we wrote over
|
||||||
|
BCS .return
|
||||||
STZ.w RandoOverworldWalkDist
|
STZ.w RandoOverworldWalkDist
|
||||||
LDA.l OWMode : ORA.l OWMode+1 : BEQ .vanilla
|
LDA.l OWMode : ORA.l OWMode+1 : BEQ .vanilla
|
||||||
|
PHY
|
||||||
JSR OWShuffle
|
JSR OWShuffle
|
||||||
LDA.w RandoOverworldTargetEdge : BMI .special
|
PLY
|
||||||
|
LDA.w RandoOverworldTargetEdge : BMI .specialOrDisabled
|
||||||
.vanilla
|
.vanilla
|
||||||
REP #$31 : LDX.b Scrap02 : LDA.b OverworldMap16Buffer ; what we wrote over
|
CLC ; allow transition
|
||||||
RTL
|
RTL
|
||||||
|
.specialOrDisabled
|
||||||
|
CMP.b #$FF : BNE .special
|
||||||
|
STZ.w RandoOverworldTargetEdge
|
||||||
|
PHB
|
||||||
|
JML Link_CheckForEdgeScreenTransition_prevent_transition
|
||||||
.special
|
.special
|
||||||
REP #$30
|
REP #$30
|
||||||
AND.w #$0003 : TAY : ASL : TAX
|
AND.w #$0003 : TAY : ASL : TAX
|
||||||
LDA.w #$007F : STA.w RandoOverworldTargetEdge
|
LDA.w #$007F : STA.w RandoOverworldTargetEdge
|
||||||
JSR OWLoadSpecialArea
|
JSR OWLoadSpecialArea
|
||||||
SEC
|
SEC
|
||||||
|
.return
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
OWDetectSpecialTransition:
|
OWDetectSpecialTransition:
|
||||||
@@ -761,17 +980,23 @@ OWDetectSpecialTransition:
|
|||||||
TXA : AND.w #$0002 : LSR
|
TXA : AND.w #$0002 : LSR
|
||||||
STA.w RandoOverworldTerrain
|
STA.w RandoOverworldTerrain
|
||||||
LDA.l OWSpecialDestIndex,X : BIT.w #$0080 : BEQ .switch_to_edge
|
LDA.l OWSpecialDestIndex,X : BIT.w #$0080 : BEQ .switch_to_edge
|
||||||
|
AND.w #$00FF : CMP.w #$00FF : BEQ .disabled
|
||||||
AND.w #$0003 : TAY : ASL : TAX
|
AND.w #$0003 : TAY : ASL : TAX
|
||||||
.normal
|
.normal
|
||||||
JSR OWLoadSpecialArea
|
JSR OWLoadSpecialArea
|
||||||
.return
|
.return
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
.disabled
|
||||||
|
SEP #$30
|
||||||
|
STZ.w RandoOverworldTargetEdge
|
||||||
|
RTL
|
||||||
|
|
||||||
.switch_to_edge
|
.switch_to_edge
|
||||||
STA.w RandoOverworldTargetEdge
|
STA.w RandoOverworldTargetEdge
|
||||||
LDA.l OWEdgeDataOffset,X : STA.w RandoOverworldEdgeAddr
|
LDA.l OWEdgeDataOffset,X : STA.w RandoOverworldEdgeAddr
|
||||||
PLA : SEP #$30 : PLA ; delete 3 bytes from stack
|
PLA : SEP #$30 : PLA ; delete 3 bytes from stack
|
||||||
JSL Link_CheckForEdgeScreenTransition : BCS .return ; Link_CheckForEdgeScreenTransition
|
JSL Link_CheckForEdgeScreenTransition : BCS .return
|
||||||
LDA.l Overworld_CheckForSpecialOverworldTrigger_Direction,X : STA.b Scrap00 : CMP.b #$08 : BNE .hobo
|
LDA.l Overworld_CheckForSpecialOverworldTrigger_Direction,X : STA.b Scrap00 : CMP.b #$08 : BNE .hobo
|
||||||
LSR : STA.b LinkPosY : STZ.b BG2V ; move Link and camera to edge
|
LSR : STA.b LinkPosY : STZ.b BG2V ; move Link and camera to edge
|
||||||
LDA.b #$06 : STA.b Scrap02
|
LDA.b #$06 : STA.b Scrap02
|
||||||
@@ -790,16 +1015,15 @@ OWDetectSpecialTransition:
|
|||||||
LDA.b #$FF : STA.b LinkRecoilZ : STA.b $C7
|
LDA.b #$FF : STA.b LinkRecoilZ : STA.b $C7
|
||||||
STZ.b $3D : STZ.b LinkSpeed : STZ.w $032B : STZ.w LinkDashing : STZ.b LinkState
|
STZ.b $3D : STZ.b LinkSpeed : STZ.w $032B : STZ.w LinkDashing : STZ.b LinkState
|
||||||
.not_dashing
|
.not_dashing
|
||||||
PLA : REP #$31 : PLA ; delete 3 bytes from stack
|
PLA : PLA : PLA ; delete 3 bytes from stack
|
||||||
LDX.b Scrap02
|
JML OverworldHandleTransitions_PerformEdgeTransition
|
||||||
LDA.b OverworldMap16Buffer
|
|
||||||
JML OverworldHandleTransitions_SpecialTrigger+6
|
|
||||||
}
|
}
|
||||||
OWEdgeTransition:
|
OWEdgeTransition:
|
||||||
{
|
{
|
||||||
LDA.l OWMode : ORA.l OWMode+1 : BEQ .unshuffled
|
LDA.l OWMode : ORA.l OWMode+1 : BEQ .unshuffled
|
||||||
LDY.w RandoOverworldTargetEdge : STZ.w RandoOverworldTargetEdge
|
LDY.w RandoOverworldTargetEdge : STZ.w RandoOverworldTargetEdge
|
||||||
CPY.b #$7F : BEQ .unshuffled
|
CPY.b #$7F : BEQ .unshuffled
|
||||||
|
JSL OWDestroyItemSprites
|
||||||
REP #$10
|
REP #$10
|
||||||
LDX.w RandoOverworldEdgeAddr
|
LDX.w RandoOverworldEdgeAddr
|
||||||
PHB : PHK : PLB
|
PHB : PHK : PLB
|
||||||
@@ -1117,6 +1341,7 @@ OWWorldTerrainUpdate: ; x = owid of destination screen, y = 1 for land to water,
|
|||||||
STZ.w RandoOverworldForceTrans
|
STZ.w RandoOverworldForceTrans
|
||||||
CMP.b #$02 : BNE +
|
CMP.b #$02 : BNE +
|
||||||
DEC : STA.w LinkDeepWater : STZ.w LinkSwimDirection
|
DEC : STA.w LinkDeepWater : STZ.w LinkSwimDirection
|
||||||
|
LDA.b FlagBY : AND.b #$7F : STA.b FlagBY
|
||||||
LDA.b #$04 : BRA .set_state
|
LDA.b #$04 : BRA .set_state
|
||||||
+
|
+
|
||||||
CMP.b #$03 : BNE ++
|
CMP.b #$03 : BNE ++
|
||||||
@@ -1137,6 +1362,7 @@ OWWorldTerrainUpdate: ; x = owid of destination screen, y = 1 for land to water,
|
|||||||
LDA.b #$01 : STA.w LinkDeepWater
|
LDA.b #$01 : STA.w LinkDeepWater
|
||||||
LDA.l FlippersEquipment : BEQ .no_flippers ; check if flippers obtained
|
LDA.l FlippersEquipment : BEQ .no_flippers ; check if flippers obtained
|
||||||
LDA.b LinkState : CMP.b #$17 : BEQ .no_flippers ; check if bunny
|
LDA.b LinkState : CMP.b #$17 : BEQ .no_flippers ; check if bunny
|
||||||
|
LDA.b FlagBY : AND.b #$7F : STA.b FlagBY
|
||||||
LDA.b #$04 : STA.b LinkState : STZ.w LinkSwimDirection : RTS
|
LDA.b #$04 : STA.b LinkState : STZ.w LinkSwimDirection : RTS
|
||||||
.no_flippers
|
.no_flippers
|
||||||
PHX
|
PHX
|
||||||
@@ -1488,7 +1714,7 @@ dw $0b28, $0b38, $0010, $0b30, $1515, $1018, $0001, $000e
|
|||||||
dw $0b70, $0ba0, $0030, $0b88, $1515, $1020, $0000, $000f
|
dw $0b70, $0ba0, $0030, $0b88, $1515, $1020, $0000, $000f
|
||||||
dw $0a40, $0b10, $00d0, $0aa8, $1d1d, $1006, $0000, $0010
|
dw $0a40, $0b10, $00d0, $0aa8, $1d1d, $1006, $0000, $0010
|
||||||
dw $0350, $0390, $0040, $0370, $1821, $2060, $0000, $0011
|
dw $0350, $0390, $0040, $0370, $1821, $2060, $0000, $0011
|
||||||
dw $0670, $06a8, $0038, $068c, $1b23, $2002, $0000, $0012
|
dw $0670, $06a8, $0038, $068c, $1b23, $2004, $0000, $0012
|
||||||
dw $0898, $09b0, $0118, $0924, $1b24, $2054, $0000, $0013
|
dw $0898, $09b0, $0118, $0924, $1b24, $2054, $0000, $0013
|
||||||
dw $0a40, $0ba0, $0160, $0af0, $2525, $100e, $0000, $0014
|
dw $0a40, $0ba0, $0160, $0af0, $2525, $100e, $0000, $0014
|
||||||
dw $0c70, $0c90, $0020, $0c80, $1e26, $2002, $0000, $0015
|
dw $0c70, $0c90, $0020, $0c80, $1e26, $2002, $0000, $0015
|
||||||
@@ -1520,7 +1746,7 @@ dw $0b28, $0b38, $0010, $0b30, $5555, $1018, $0001, $002e
|
|||||||
dw $0b70, $0ba0, $0030, $0b88, $5555, $1020, $0000, $002f
|
dw $0b70, $0ba0, $0030, $0b88, $5555, $1020, $0000, $002f
|
||||||
dw $0a40, $0b10, $00d0, $0aa8, $5d5d, $1006, $0000, $0030
|
dw $0a40, $0b10, $00d0, $0aa8, $5d5d, $1006, $0000, $0030
|
||||||
dw $0350, $0390, $0040, $0370, $5861, $2060, $0000, $0031
|
dw $0350, $0390, $0040, $0370, $5861, $2060, $0000, $0031
|
||||||
dw $0670, $06a8, $0038, $068c, $5b63, $2002, $0000, $0032
|
dw $0670, $06a8, $0038, $068c, $5b63, $2004, $0000, $0032
|
||||||
dw $0898, $09b0, $0118, $0924, $5b64, $2054, $0000, $0033
|
dw $0898, $09b0, $0118, $0924, $5b64, $2054, $0000, $0033
|
||||||
dw $0a40, $0ba0, $0160, $0af0, $6565, $100e, $0000, $0034
|
dw $0a40, $0ba0, $0160, $0af0, $6565, $100e, $0000, $0034
|
||||||
dw $0c70, $0c90, $0020, $0c80, $5e66, $2002, $0000, $0035
|
dw $0c70, $0c90, $0020, $0c80, $5e66, $2002, $0000, $0035
|
||||||
@@ -1827,16 +2053,42 @@ db $74, $4e, $10, $b1, $00, $1c
|
|||||||
UWBonkPrizeData:
|
UWBonkPrizeData:
|
||||||
db $ff, $00, $02, $b5, $00, $08
|
db $ff, $00, $02, $b5, $00, $08
|
||||||
|
|
||||||
; temporary fix - murahdahla replaces one of the bonk tree prizes
|
org $AABC80 ;PC 153C80
|
||||||
; so we copy the sprite table here and update the pointer
|
OWMapGridLight:
|
||||||
; longterm solution should be to spawn in murahdahla separately
|
db $00, $01, $02, $03, $04, $05, $06, $07
|
||||||
org $89AE2A
|
db $08, $09, $0A, $0B, $0C, $0D, $0E, $0F
|
||||||
Overworld_Sprites_Screen1A_2:
|
db $10, $11, $12, $13, $14, $15, $16, $17
|
||||||
db $08, $0F, $41 ; yx:{ 0x080, 0x0F0 }
|
db $18, $19, $1A, $1B, $1C, $1D, $1E, $1F
|
||||||
db $0E, $0C, $41 ; yx:{ 0x0E0, 0x0C0 }
|
db $20, $21, $22, $23, $24, $25, $26, $27
|
||||||
db $11, $0D, $E3 ; yx:{ 0x110, 0x0D0 }
|
db $28, $29, $2A, $2B, $2C, $2D, $2E, $2F
|
||||||
db $18, $0A, $D8 ; yx:{ 0x180, 0x0A0 }
|
db $30, $31, $32, $33, $34, $35, $36, $37
|
||||||
db $18, $0F, $45 ; yx:{ 0x180, 0x0F0 }
|
db $38, $39, $3A, $3B, $3C, $3D, $3E, $3F
|
||||||
db $FF ; END
|
OWMapGridDark:
|
||||||
org $89CA55
|
db $40, $41, $42, $43, $44, $45, $46, $47
|
||||||
dw Overworld_Sprites_Screen1A_2&$FFFF
|
db $48, $49, $4A, $4B, $4C, $4D, $4E, $4F
|
||||||
|
db $50, $51, $52, $53, $54, $55, $56, $57
|
||||||
|
db $58, $59, $5A, $5B, $5C, $5D, $5E, $5F
|
||||||
|
db $60, $61, $62, $63, $64, $65, $66, $67
|
||||||
|
db $68, $69, $6A, $6B, $6C, $6D, $6E, $6F
|
||||||
|
db $70, $71, $72, $73, $74, $75, $76, $77
|
||||||
|
db $78, $79, $7A, $7B, $7C, $7D, $7E, $7F
|
||||||
|
|
||||||
|
org $AABD00 ;PC 153D00
|
||||||
|
OWMapGridLightPositionByAbsolutePosition:
|
||||||
|
db $00, $01, $02, $03, $04, $05, $06, $07
|
||||||
|
db $08, $09, $0A, $0B, $0C, $0D, $0E, $0F
|
||||||
|
db $10, $11, $12, $13, $14, $15, $16, $17
|
||||||
|
db $18, $19, $1A, $1B, $1C, $1D, $1E, $1F
|
||||||
|
db $20, $21, $22, $23, $24, $25, $26, $27
|
||||||
|
db $28, $29, $2A, $2B, $2C, $2D, $2E, $2F
|
||||||
|
db $30, $31, $32, $33, $34, $35, $36, $37
|
||||||
|
db $38, $39, $3A, $3B, $3C, $3D, $3E, $3F
|
||||||
|
OWMapGridDarkPositionByAbsolutePosition:
|
||||||
|
db $00, $01, $02, $03, $04, $05, $06, $07
|
||||||
|
db $08, $09, $0A, $0B, $0C, $0D, $0E, $0F
|
||||||
|
db $10, $11, $12, $13, $14, $15, $16, $17
|
||||||
|
db $18, $19, $1A, $1B, $1C, $1D, $1E, $1F
|
||||||
|
db $20, $21, $22, $23, $24, $25, $26, $27
|
||||||
|
db $28, $29, $2A, $2B, $2C, $2D, $2E, $2F
|
||||||
|
db $30, $31, $32, $33, $34, $35, $36, $37
|
||||||
|
db $38, $39, $3A, $3B, $3C, $3D, $3E, $3F
|
||||||
|
|||||||
@@ -291,10 +291,10 @@ RTL
|
|||||||
REP #$30
|
REP #$30
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
; dungeon names
|
; dungeon names
|
||||||
LDA.w #$2D50
|
LDA.w #$2DA4
|
||||||
LDY.w #00
|
LDY.w #00
|
||||||
|
|
||||||
.next_dungeon_name
|
.next_dungeon_name
|
||||||
LDX.w .dungeon_positions,Y
|
LDX.w .dungeon_positions,Y
|
||||||
STA.w GFXStripes+$0646,X
|
STA.w GFXStripes+$0646,X
|
||||||
INC
|
INC
|
||||||
@@ -310,10 +310,10 @@ RTL
|
|||||||
STA.w GFXStripes+$0706,X
|
STA.w GFXStripes+$0706,X
|
||||||
|
|
||||||
DEX : DEX
|
DEX : DEX
|
||||||
BPL --
|
BPL --
|
||||||
|
|
||||||
LDA.l HudFlag : AND.w #$0020 : BEQ +
|
LDA.l HudFlag : AND.w #$0020 : BEQ +
|
||||||
JMP .maps_and_compasses
|
JMP .maps_and_compasses
|
||||||
;-------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------
|
||||||
+
|
+
|
||||||
LDA.l HUDDungeonItems : AND.w #$0001 : BNE +
|
LDA.l HUDDungeonItems : AND.w #$0001 : BNE +
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ LinkSubPixelVelocty = $7E002A ; Word length
|
|||||||
LinkAnimationStep = $7E002E ;
|
LinkAnimationStep = $7E002E ;
|
||||||
LinkDirection = $7E002F ; $00 = Up | $02 = Down | $04 = Left | $06 = Right
|
LinkDirection = $7E002F ; $00 = Up | $02 = Down | $04 = Left | $06 = Right
|
||||||
;
|
;
|
||||||
|
FlagBY = $7E003A ; Bitfield for B and Y buttons.
|
||||||
|
;
|
||||||
OAMOffsetY = $7E0044 ;
|
OAMOffsetY = $7E0044 ;
|
||||||
OAMOffsetX = $7E0045 ;
|
OAMOffsetX = $7E0045 ;
|
||||||
LinkIncapacitatedTimer = $7E0046 ; Countdown when Link takes damage, not same as I-frames
|
LinkIncapacitatedTimer = $7E0046 ; Countdown when Link takes damage, not same as I-frames
|
||||||
@@ -235,6 +237,8 @@ CurrentYItem = $7E0303 ;
|
|||||||
AButtonAct = $7E0308 ; Bitfield for A-actions. $80 = Carry/toss | $02 Prayer | $01 = Tree pull
|
AButtonAct = $7E0308 ; Bitfield for A-actions. $80 = Carry/toss | $02 Prayer | $01 = Tree pull
|
||||||
CarryAct = $7E0309 ; Bitfield for carrying. $02 = Tossing | $01 = Lifting
|
CarryAct = $7E0309 ; Bitfield for carrying. $02 = Tossing | $01 = Lifting
|
||||||
;
|
;
|
||||||
|
LinkIFrames = $7E031F ; Countdown for Link's invincibility frames after taking damage.
|
||||||
|
;
|
||||||
LinkSwimDirection = $7E0340 ; Bitfield for swim direction. (.... udlr)
|
LinkSwimDirection = $7E0340 ; Bitfield for swim direction. (.... udlr)
|
||||||
;
|
;
|
||||||
LinkDeepWater = $7E0345 ; Set when Link is in deep water.
|
LinkDeepWater = $7E0345 ; Set when Link is in deep water.
|
||||||
@@ -593,6 +597,8 @@ HUDMultiIndicator = $7EC790 ;
|
|||||||
HUDKeysObtained = $7EC7A2 ;
|
HUDKeysObtained = $7EC7A2 ;
|
||||||
HUDKeysSlash = $7EC7A4 ;
|
HUDKeysSlash = $7EC7A4 ;
|
||||||
HUDKeysTotal = $7EC7A6 ;
|
HUDKeysTotal = $7EC7A6 ;
|
||||||
|
HUDKeysExtraPlus = $7EC7E4 ;
|
||||||
|
HUDKeysExtraCount = $7EC7E6 ;
|
||||||
;
|
;
|
||||||
BigRAM = $7EC900 ; Big buffer of free ram (0x1F00)
|
BigRAM = $7EC900 ; Big buffer of free ram (0x1F00)
|
||||||
ItemGFXStack = $7ECB00 ; Pointers to source of decompressed item tiles deferred to NMI loading.
|
ItemGFXStack = $7ECB00 ; Pointers to source of decompressed item tiles deferred to NMI loading.
|
||||||
@@ -777,6 +783,7 @@ endmacro
|
|||||||
%assertRAM(LinkRecoilZ, $7E0029)
|
%assertRAM(LinkRecoilZ, $7E0029)
|
||||||
%assertRAM(LinkAnimationStep, $7E002E)
|
%assertRAM(LinkAnimationStep, $7E002E)
|
||||||
%assertRAM(LinkDirection, $7E002F)
|
%assertRAM(LinkDirection, $7E002F)
|
||||||
|
%assertRAM(FlagBY, $7E003A)
|
||||||
%assertRAM(OAMOffsetY, $7E0044)
|
%assertRAM(OAMOffsetY, $7E0044)
|
||||||
%assertRAM(OAMOffsetX, $7E0045)
|
%assertRAM(OAMOffsetX, $7E0045)
|
||||||
%assertRAM(LinkIncapacitatedTimer, $7E0046)
|
%assertRAM(LinkIncapacitatedTimer, $7E0046)
|
||||||
@@ -874,6 +881,8 @@ endmacro
|
|||||||
%assertRAM(UseY1, $7E0301)
|
%assertRAM(UseY1, $7E0301)
|
||||||
%assertRAM(CurrentYItem, $7E0303)
|
%assertRAM(CurrentYItem, $7E0303)
|
||||||
%assertRAM(AButtonAct, $7E0308)
|
%assertRAM(AButtonAct, $7E0308)
|
||||||
|
%assertRAM(CarryAct, $7E0309)
|
||||||
|
%assertRAM(LinkIFrames, $7E031F)
|
||||||
%assertRAM(LinkSwimDirection, $7E0340)
|
%assertRAM(LinkSwimDirection, $7E0340)
|
||||||
%assertRAM(LinkDeepWater, $7E0345)
|
%assertRAM(LinkDeepWater, $7E0345)
|
||||||
%assertRAM(TileActIce, $7E0348)
|
%assertRAM(TileActIce, $7E0348)
|
||||||
|
|||||||
+4
-4
@@ -1532,7 +1532,7 @@ db $19,$1A,$1B,$1C,$1D,$1E,$1F,$20
|
|||||||
db $21,$22,$11,$11,$10,$16,$16,$16
|
db $21,$22,$11,$11,$10,$16,$16,$16
|
||||||
db $16,$16,$11,$16,$16,$16,$15,$15
|
db $16,$16,$11,$16,$16,$16,$15,$15
|
||||||
db $15,$15,$15,$15,$15,$15,$15,$15
|
db $15,$15,$15,$15,$15,$15,$15,$15
|
||||||
db $15,$15,$16,$02,$09,$00,$00,$00
|
db $15,$15,$2E,$02,$09,$00,$00,$00
|
||||||
|
|
||||||
MusicShuffleTable:
|
MusicShuffleTable:
|
||||||
db $01,$02,$03,$04,$05,$06,$07,$08
|
db $01,$02,$03,$04,$05,$06,$07,$08
|
||||||
@@ -2686,9 +2686,9 @@ org $B0EFFF ; PC 0x186FFF
|
|||||||
BallNChainDungeon: ; Dungeon ID where ball n chain guard is located. Write
|
BallNChainDungeon: ; Dungeon ID where ball n chain guard is located. Write
|
||||||
db $02 ; $FF to count ball and chain item for collection stats.
|
db $02 ; $FF to count ball and chain item for collection stats.
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
org $B0F000
|
||||||
; 0x187000 - 18700F (unused)
|
ExtraChestKeys: ; PC 0x187000-0x18700F
|
||||||
;--------------------------------------------------------------------------------
|
db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
|
||||||
|
|
||||||
org $B0F010
|
org $B0F010
|
||||||
ChestKeys: ; PC 0x187010-0x18701F
|
ChestKeys: ; PC 0x187010-0x18701F
|
||||||
|
|||||||
@@ -99,6 +99,7 @@ HandleFollowersAfterMirroring = $87AA8B
|
|||||||
LinkHop_FindArbitraryLandingSpot = $87E359
|
LinkHop_FindArbitraryLandingSpot = $87E359
|
||||||
Link_HandleMovingAnimation_FullLongEntry = $87E68F
|
Link_HandleMovingAnimation_FullLongEntry = $87E68F
|
||||||
Link_CheckForEdgeScreenTransition = $87F413
|
Link_CheckForEdgeScreenTransition = $87F413
|
||||||
|
Link_CheckForEdgeScreenTransition_prevent_transition = $87F42C
|
||||||
Sprite_CheckIfPlayerPreoccupied = $87F4AA
|
Sprite_CheckIfPlayerPreoccupied = $87F4AA
|
||||||
FlashGanonTowerPalette_next_thunder = $87FA81
|
FlashGanonTowerPalette_next_thunder = $87FA81
|
||||||
FlashGanonTowerPalette_bright_white = $87FAAC
|
FlashGanonTowerPalette_bright_white = $87FAAC
|
||||||
@@ -221,6 +222,8 @@ Ancilla29_MilestoneItemReceipt_skip_crystal_sfx = $88CAE5
|
|||||||
Ancilla29_MilestoneItemReceipt_no_sparkle = $88CB2E
|
Ancilla29_MilestoneItemReceipt_no_sparkle = $88CB2E
|
||||||
Ancilla_SetOAM_XY = $88F6F3
|
Ancilla_SetOAM_XY = $88F6F3
|
||||||
Ancilla_AddAncilla = $899CCE
|
Ancilla_AddAncilla = $899CCE
|
||||||
|
WorldMap_CalculateOAMCoordinates_exit_successfully = $8AC51F
|
||||||
|
WorldMap_MultiplyAxB = $8AC57F
|
||||||
UpdateHUD = $8DDFA9
|
UpdateHUD = $8DDFA9
|
||||||
UpdateEquippedItem = $8DDFAF
|
UpdateEquippedItem = $8DDFAF
|
||||||
DrawProgressIcons = $8DE9C8
|
DrawProgressIcons = $8DE9C8
|
||||||
@@ -295,6 +298,7 @@ WorldMap_RedXChars = $8ABF70
|
|||||||
WorldMap_CalculateOAMCoordinates = $8AC3B1
|
WorldMap_CalculateOAMCoordinates = $8AC3B1
|
||||||
WorldMap_HandleSpriteBlink = $8AC52E
|
WorldMap_HandleSpriteBlink = $8AC52E
|
||||||
WorldMapIcon_AdjustCoordinate = $8AC59B
|
WorldMapIcon_AdjustCoordinate = $8AC59B
|
||||||
|
WorldMap_LightWorldTilemap = $8AC739
|
||||||
WorldMap_DarkWorldTilemap = $8AD739
|
WorldMap_DarkWorldTilemap = $8AD739
|
||||||
DungeonMapRoomMarkerYBase = $8AE803
|
DungeonMapRoomMarkerYBase = $8AE803
|
||||||
DungeonMapBossRooms = $8AE817
|
DungeonMapBossRooms = $8AE817
|
||||||
|
|||||||
Reference in New Issue
Block a user