let's dev 6/10/17
fixed hobo music reset fixed (maybe) freeroaming dungeon item text loader cleaned up regular text loader removed silver arrow indicator from item menu added silver arrow indicator to hud for bowless silver state added framework for static boss RNG
This commit is contained in:
@@ -26,7 +26,7 @@ org $3FFFFF ; <- 1FFFFF
|
||||
db #$00 ; expand file to 2mb
|
||||
|
||||
org $1FFFF8 ; timestamp rom
|
||||
dl #$20170606
|
||||
dl #$20170610
|
||||
|
||||
;================================================================================
|
||||
|
||||
@@ -189,15 +189,15 @@ GFX_HUD_Palette:
|
||||
incbin hudpalette.pal
|
||||
warnpc $348000
|
||||
|
||||
org $320000
|
||||
org $328000
|
||||
Extra_Text_Table:
|
||||
incsrc itemtext.asm
|
||||
|
||||
incsrc externalhooks.asm
|
||||
;================================================================================
|
||||
org $2F8000 ; PC 0x178000
|
||||
org $AF8000 ; PC 0x178000
|
||||
Static_RNG:
|
||||
warnpc $2F8400
|
||||
warnpc $AF8400
|
||||
;================================================================================
|
||||
;bank $3A reserved for downstream use (Plandomizer)
|
||||
;bank $3B reserved for downstream use (Plandomizer)
|
||||
|
||||
10
bugfixes.asm
10
bugfixes.asm
@@ -18,3 +18,13 @@ AllowSQ:
|
||||
.done
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
;0 = Reset Music
|
||||
;1 = Don't Reset Music
|
||||
MSMusicReset:
|
||||
LDA $8A : CMP.b #$80 : BNE +
|
||||
LDA $23
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
112
dialog.asm
112
dialog.asm
@@ -85,21 +85,7 @@ macro LoadDialogAddress(address)
|
||||
LDA $01 : PHA
|
||||
LDA $02 : PHA
|
||||
LDA.b #$01 : STA $7F5035 ; set flag
|
||||
|
||||
LDA.b #<address> : STA $00 ; write pointer to direct page
|
||||
LDA.b #<address>>>8 : STA $01
|
||||
LDA.b #<address>>>16 : STA $02
|
||||
|
||||
REP #$20 : LDA !OFFSET_POINTER : TAX : LDY.w #$0000 : SEP #$20 ; copy 2-byte offset pointer to X and set Y to 0
|
||||
?loop:
|
||||
LDA [$00], Y ; load the next character from the pointer
|
||||
STA !DIALOG_BUFFER, X ; write to the buffer
|
||||
INX : INY
|
||||
CMP.b #$7F : BNE ?loop
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
TXA : INC : STA !OFFSET_RETURN ; copy out X into
|
||||
LDA.w #$0000 : STA !OFFSET_POINTER
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
%CopyDialog(<address>)
|
||||
PLA : STA $02
|
||||
PLA : STA $01
|
||||
PLA : STA $00
|
||||
@@ -108,68 +94,114 @@ macro LoadDialogAddress(address)
|
||||
PLY : PLX : PLA
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
macro CopyDialog(address)
|
||||
LDA.b #<address> : STA $00 ; write pointer to direct page
|
||||
LDA.b #<address>>>8 : STA $01
|
||||
LDA.b #<address>>>16 : STA $02
|
||||
|
||||
REP #$20 : LDA !OFFSET_POINTER : TAX : LDY.w #$0000 : SEP #$20 ; copy 2-byte offset pointer to X and set Y to 0
|
||||
?loop:
|
||||
LDA [$00], Y ; load the next character from the pointer
|
||||
STA !DIALOG_BUFFER, X ; write to the buffer
|
||||
INX : INY
|
||||
CMP.b #$7F : BNE ?loop
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
TXA : INC : STA !OFFSET_RETURN ; copy out X into
|
||||
LDA.w #$0000 : STA !OFFSET_POINTER
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
endmacro
|
||||
;--------------------------------------------------------------------------------
|
||||
!ITEM_TEMPORARY = "$7F5040"
|
||||
FreeDungeonItemNotice:
|
||||
PHX : PHA
|
||||
STA !ITEM_TEMPORARY
|
||||
|
||||
PHA : PHX : PHY
|
||||
PHP
|
||||
PHB : PHK : PLB
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
REP #$10 ; set 16-bit index registers
|
||||
LDA $00 : PHA
|
||||
LDA $01 : PHA
|
||||
LDA $02 : PHA
|
||||
;--------------------------------
|
||||
|
||||
LDA.l FreeItemText : BNE + : BRL .skip : +
|
||||
|
||||
PLA : PHA
|
||||
LDA !ITEM_TEMPORARY
|
||||
AND.b #$F0 ; looking at high bits only
|
||||
CMP.b #$70 : BNE + ; map of...
|
||||
%LoadDialogAddress(Notice_MapOf)
|
||||
%CopyDialog(Notice_MapOf)
|
||||
BRL .dungeon
|
||||
+ : CMP.b #$80 : BNE + ; compass of...
|
||||
%LoadDialogAddress(Notice_CompassOf)
|
||||
%CopyDialog(Notice_CompassOf)
|
||||
BRL .dungeon
|
||||
+ : CMP.b #$90 : BNE + ; big key of...
|
||||
%LoadDialogAddress(Notice_BigKeyOf)
|
||||
%CopyDialog(Notice_BigKeyOf)
|
||||
BRA .dungeon
|
||||
+ : CMP.b #$A0 : BNE + ; small key of...
|
||||
%LoadDialogAddress(Notice_SmallKeyOf)
|
||||
%CopyDialog(Notice_SmallKeyOf)
|
||||
PLA : AND.b #$0F : STA $7F5020 : LDA.b #$0F : !SUB $7F5020 : PHA
|
||||
+
|
||||
|
||||
.dungeon
|
||||
LDA !OFFSET_RETURN : DEC #2 : STA !OFFSET_POINTER
|
||||
PLA : PHA
|
||||
LDA !ITEM_TEMPORARY
|
||||
AND.b #$0F ; looking at high bits only
|
||||
CMP.b #$00 : BNE + ; ...light world
|
||||
%LoadDialogAddress(Notice_LightWorld)
|
||||
%CopyDialog(Notice_LightWorld) : BRL .done
|
||||
+ : CMP.b #$01 : BNE + ; ...dark world
|
||||
%LoadDialogAddress(Notice_DarkWorld)
|
||||
%CopyDialog(Notice_DarkWorld) : BRL .done
|
||||
+ : CMP.b #$02 : BNE + ; ...ganon's tower
|
||||
%LoadDialogAddress(Notice_GTower)
|
||||
%CopyDialog(Notice_GTower) : BRL .done
|
||||
+ : CMP.b #$03 : BNE + ; ...turtle rock
|
||||
%LoadDialogAddress(Notice_TRock)
|
||||
%CopyDialog(Notice_TRock) : BRL .done
|
||||
+ : CMP.b #$04 : BNE + ; ...thieves' town
|
||||
%LoadDialogAddress(Notice_Thieves)
|
||||
%CopyDialog(Notice_Thieves) : BRL .done
|
||||
+ : CMP.b #$05 : BNE + ; ...tower of hera
|
||||
%LoadDialogAddress(Notice_Hera)
|
||||
%CopyDialog(Notice_Hera) : BRL .done
|
||||
+ : CMP.b #$06 : BNE + ; ...ice palace
|
||||
%LoadDialogAddress(Notice_Ice)
|
||||
%CopyDialog(Notice_Ice) : BRL .done
|
||||
+ : CMP.b #$07 : BNE + ; ...skull woods
|
||||
%LoadDialogAddress(Notice_Skull)
|
||||
%CopyDialog(Notice_Skull) : BRL .done
|
||||
+ : CMP.b #$08 : BNE + ; ...misery mire
|
||||
%LoadDialogAddress(Notice_Mire)
|
||||
%CopyDialog(Notice_Mire) : BRL .done
|
||||
+ : CMP.b #$09 : BNE + ; ...dark palace
|
||||
%LoadDialogAddress(Notice_PoD)
|
||||
%CopyDialog(Notice_PoD) : BRL .done
|
||||
+ : CMP.b #$0A : BNE + ; ...swamp palace
|
||||
%LoadDialogAddress(Notice_Swamp)
|
||||
%CopyDialog(Notice_Swamp) : BRL .done
|
||||
+ : CMP.b #$0B : BNE + ; ...agahnim's tower
|
||||
%LoadDialogAddress(Notice_AgaTower)
|
||||
%CopyDialog(Notice_AgaTower) : BRL .done
|
||||
+ : CMP.b #$0C : BNE + ; ...desert palace
|
||||
%LoadDialogAddress(Notice_Desert)
|
||||
%CopyDialog(Notice_Desert) : BRL .done
|
||||
+ : CMP.b #$0D : BNE + ; ...eastern palace
|
||||
%LoadDialogAddress(Notice_Eastern)
|
||||
%CopyDialog(Notice_Eastern) : BRA .done
|
||||
+ : CMP.b #$0E : BNE + ; ...hyrule castle
|
||||
%LoadDialogAddress(Notice_Castle)
|
||||
%CopyDialog(Notice_Castle) : BRA .done
|
||||
+ : CMP.b #$0F : BNE + ; ...sewers
|
||||
%LoadDialogAddress(Notice_Sewers)
|
||||
%CopyDialog(Notice_Sewers)
|
||||
+
|
||||
.done
|
||||
|
||||
;LDA.b #$01 : STA $7F5035 ; set alternate dialog flag
|
||||
LDA.b #$01 : STA $7F5035 ; set alternate dialog flag
|
||||
|
||||
;--------------------------------
|
||||
PLA : STA $02
|
||||
PLA : STA $01
|
||||
PLA : STA $00
|
||||
PLB
|
||||
PLP
|
||||
PLY : PLX : PLA
|
||||
JSL.l Sprite_ShowMessageMinimal
|
||||
RTL
|
||||
|
||||
.skip
|
||||
PLA : PLX
|
||||
;--------------------------------
|
||||
PLA : STA $02
|
||||
PLA : STA $01
|
||||
PLA : STA $00
|
||||
PLB
|
||||
PLP
|
||||
PLY : PLX : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
DialogBlind:
|
||||
|
||||
14
hooks.asm
14
hooks.asm
@@ -311,7 +311,10 @@ org $1EE094 ; PC 0xF6094 - sprite_hylian_plaque.asm : 79 (JSL Sprite_ShowMessage
|
||||
JSL.l DialogPedestal
|
||||
;--------------------------------------------------------------------------------
|
||||
org $08C431 ; <- 44431 - ancilla_receive_item.asm : 125 (LDA $0C5E, X : CMP.b #$01 : BNE .notMasterSword2)
|
||||
LDA $8A : CMP.b #$80 : NOP
|
||||
JSL.l MSMusicReset : NOP
|
||||
;LDA $8A : CMP.b #$80 : NOP
|
||||
; $22 = $0000 - $00FF - MS Pedestal
|
||||
; $22 = $0100 - $00FF - Hobo
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;================================================================================
|
||||
@@ -790,9 +793,12 @@ LDX.w #HUD_TileMap
|
||||
org $0DFA9C ; <- 6FA9C - headsup_display.asm : 629 (MVN $0D, $7E ; $Transfer 0x014A bytes from $6FE77 -> $7EC700)
|
||||
MVN $207E
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0DE48E ; <- 6E48E - equipment.asm : 1233 (LDA.w #$11CE : STA $00)
|
||||
;org $0DE48E ; <- 6E48E - equipment.asm : 1233 (LDA.w #$11CE : STA $00) - HOOK HERE TO DRAW ON THE ITEM SCREEN
|
||||
;JSL.l DrawHUDSilverArrows
|
||||
;NOP
|
||||
;--------------------------------------------------------------------------------
|
||||
org $0DFB1F ; 6FB1F - headsup_display.asm : 681 (LDA $7EF340 : BEQ .hastNoBow)
|
||||
JSL.l DrawHUDSilverArrows
|
||||
NOP
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;================================================================================
|
||||
@@ -983,7 +989,7 @@ LDX.b #$F1 : STX $012C
|
||||
;================================================================================
|
||||
org $029090 ; <- 11090 - Bank02.asm:3099 (LDA $7EF374 : LSR A : BCS BRANCH_GAMMA)
|
||||
JSL.l CheckHeraObject : BNE + : NOP
|
||||
STX $012C
|
||||
STX $012C ; DON'T MOVE THIS FORWARD OR MADNESS AWAITS
|
||||
+
|
||||
;================================================================================
|
||||
org $029798 ; <- 11798 - Bank02.asm:4287 (CMP $02895C, X : BNE BRANCH_ALPHA)
|
||||
|
||||
@@ -44,7 +44,7 @@ Notice_GTower:
|
||||
|
||||
; Turtle Rock
|
||||
Notice_TRock:
|
||||
db #76, $00, $BD, $00, $BE, $00, $BB, $00, $BD, $00, $B5, $00, $AE, $00, $FF, $00, $BB, $00, $B8, $00, $AC, $00, $B4
|
||||
db $76, $00, $BD, $00, $BE, $00, $BB, $00, $BD, $00, $B5, $00, $AE, $00, $FF, $00, $BB, $00, $B8, $00, $AC, $00, $B4
|
||||
dw #$7F7F
|
||||
|
||||
; Thieves Town
|
||||
|
||||
25
newitems.asm
25
newitems.asm
@@ -644,15 +644,26 @@ Link_ReceiveItemAlternatesExpanded:
|
||||
PLB
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;DrawHUDSilverArrows:
|
||||
; LDA $7EF340 : AND.w #$00FF : BNE +
|
||||
; LDA $7EF414 : AND.w #$0040 : BEQ +
|
||||
; LDA.w #$2810 : STA $11C8
|
||||
; LDA.w #$2811 : STA $11CA
|
||||
; LDA.w #$2820 : STA $1208
|
||||
; LDA.w #$2821 : STA $120A
|
||||
; +
|
||||
; LDA.w #$11CE : STA $00 ; thing we wrote over
|
||||
;RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;Return $7EF340 unless no bow and silvers, then return 3
|
||||
DrawHUDSilverArrows:
|
||||
LDA $7EF340 : AND.w #$00FF : BNE +
|
||||
LDA $7EF414 : AND.w #$0040 : BEQ +
|
||||
LDA.w #$2810 : STA $11C8
|
||||
LDA.w #$2811 : STA $11CA
|
||||
LDA.w #$2820 : STA $1208
|
||||
LDA.w #$2821 : STA $120A
|
||||
LDA $7EF340 : BNE +
|
||||
LDA $7EF414 : AND.b #$40 : BEQ ++
|
||||
LDA.b #$03
|
||||
RTL
|
||||
++
|
||||
LDA $7EF340
|
||||
+
|
||||
LDA.w #$11CE : STA $00 ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!RNG_ITEM = "$7EF450"
|
||||
|
||||
75
rngfixes.asm
75
rngfixes.asm
@@ -35,3 +35,78 @@ RTL
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
RNG_Lanmolas1:
|
||||
LDA.b #$00 : BRA _rng_done
|
||||
RNG_Moldorm1:
|
||||
LDA.b #$01 : BRA _rng_done
|
||||
RNG_Agahnim1:
|
||||
LDA.b #$02 : BRA _rng_done
|
||||
RNG_Helmasaur:
|
||||
LDA.b #$03 : BRA _rng_done
|
||||
RNG_Arrghus:
|
||||
LDA.b #$04 : BRA _rng_done
|
||||
RNG_Mothula:
|
||||
LDA.b #$05 : BRA _rng_done
|
||||
RNG_Kholdstare:
|
||||
LDA.b #$06 : BRA _rng_done
|
||||
RNG_Vitreous:
|
||||
LDA.b #$07 : BRA _rng_done
|
||||
RNG_Trinexx:
|
||||
LDA.b #$08 : BRA _rng_done
|
||||
RNG_Lanmolas2:
|
||||
LDA.b #$09 : BRA _rng_done
|
||||
RNG_Moldorm2:
|
||||
LDA.b #$0A : BRA _rng_done
|
||||
RNG_Agahnim2:
|
||||
LDA.b #$0B : BRA _rng_done
|
||||
RNG_Agahnim2Phantoms:
|
||||
LDA.b #$0C : BRA _rng_done
|
||||
RNG_Ganon:
|
||||
LDA.b #$0D
|
||||
_rng_done:
|
||||
JSL.l GetStaticRNG
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
; In: A = RNG Index
|
||||
; Out: A = RNG Result
|
||||
;--------------------------------------------------------------------------------
|
||||
!RNG_POINTERS = "$7F5200"
|
||||
GetStaticRNG:
|
||||
PHX : PHP
|
||||
REP #$20 ; set 16-bit accumulator and index registers
|
||||
AND.w #$007F
|
||||
ASL : TAX : LDA !RNG_POINTERS, X : INC : STA !RNG_POINTERS, X : TAX : ASL ; increment pointer and move value to X
|
||||
LDA Static_RNG, X ; load RNG value
|
||||
PLP : PLX
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
InitRNGPointerTable:
|
||||
PHX : PHP
|
||||
REP #$30 ; set 16-bit accumulator & index registers
|
||||
LDX.w #$0000
|
||||
-
|
||||
LDA .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
||||
LDA .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
||||
LDA .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
||||
LDA .rngDefaults, X : STA !RNG_POINTERS, X : INX #2
|
||||
CPX.w #$007F : !BLT -
|
||||
PLP : PLX
|
||||
RTL
|
||||
.rngDefaults
|
||||
dw #$0000 ; 00 = Lanmolas 1
|
||||
dw #$0040 ; 01 = Moldorm 1
|
||||
dw #$0080 ; 02 = Agahnim 1
|
||||
dw #$00C0 ; 03 = Helmasaur
|
||||
dw #$0100 ; 04 = Arrghus
|
||||
dw #$0140 ; 05 = Mothula
|
||||
dw #$0180 ; 06 = Kholdstare
|
||||
dw #$01C0 ; 07 = Vitreous
|
||||
dw #$0200 ; 08 = Trinexx
|
||||
dw #$0240 ; 09 = Lanmolas 2
|
||||
dw #$0280 ; 10 = Moldorm 2
|
||||
dw #$02C0 ; 11 = Agahnim 2
|
||||
dw #$0300 ; 12 = Agahnim 2 Phantoms
|
||||
dw #$0340 ; 13 = Ganon
|
||||
dw #$0380 ; 14 = Unused
|
||||
dw #$03C0 ; 15 = Unused
|
||||
;--------------------------------------------------------------------------------
|
||||
67
sandbox.asm
67
sandbox.asm
@@ -1,3 +1,70 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
;Dungeon Music
|
||||
;org $02D592 ; PC 0x15592
|
||||
;11 - Pendant Dungeon
|
||||
;16 - Crystal Dungeon
|
||||
;
|
||||
;org $02D592+$08
|
||||
;Music_Eastern:
|
||||
;db $11
|
||||
;
|
||||
;org $02D592+$09
|
||||
;Music_Desert:
|
||||
;db $16, $16, $16, $16
|
||||
;
|
||||
;org $02D592+$33
|
||||
;Music_Hera:
|
||||
;db $16
|
||||
;org $02907A ; 0x1107A - Bank02.asm:3089 (#$11)
|
||||
;Music_Hera2:
|
||||
;db $16
|
||||
;org $028B8C ; 0x10B8C - Bank02.asm:2231 (#$11)
|
||||
;Music_Hera3:
|
||||
;db $16
|
||||
;
|
||||
;org $02D592+$26
|
||||
;Music_Darkness:
|
||||
;db $11
|
||||
;
|
||||
;org $02D592+$25
|
||||
;Music_Swamp:
|
||||
;db $16
|
||||
;
|
||||
;org $02D592+$28
|
||||
;Music_Skull:
|
||||
;db $11, $11, $11, $11
|
||||
;
|
||||
;org $02D592+$76
|
||||
;Music_Skul_Drop:
|
||||
;db $11, $11, $11, $11
|
||||
;
|
||||
;org $02D592+$34
|
||||
;Music_Thieves:
|
||||
;db $11
|
||||
;
|
||||
;org $02D592+$2D
|
||||
;Music_Ice:
|
||||
;db $16
|
||||
;
|
||||
;org $02D592+$27
|
||||
;Music_Mire:
|
||||
;db $11
|
||||
;
|
||||
;org $02D592+$35
|
||||
;Music_TRock:
|
||||
;db $11
|
||||
;org $02D592+$15
|
||||
;Music_TRock2:
|
||||
;db $11
|
||||
;org $02D592+$18
|
||||
;Music_TRock3:
|
||||
;db $11, $11
|
||||
;
|
||||
;org $02D592+$37
|
||||
;Music_GTower:
|
||||
;db $11
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
;org $06FA78 ; set all prize packs to bombs
|
||||
;dd #$DDDDDDDD
|
||||
;dd #$DDDDDDDD
|
||||
|
||||
@@ -75,7 +75,7 @@ PedestalMusicCheck:
|
||||
;db #$01 ; #$01 = Master Sword (default)
|
||||
org $0589B0 ; PC 0x289B0 ; sprite_master_sword.asm : 179
|
||||
PedestalSword:
|
||||
db #$6A ; #$01 = Master Sword (default)
|
||||
db #$01 ; #$01 = Master Sword (default)
|
||||
|
||||
org $308029 ; PC 0x180029
|
||||
SmithItemMode:
|
||||
@@ -1065,7 +1065,8 @@ dw #9999 ; Rupee Limit
|
||||
; $7F503D - Stats Rupee Total
|
||||
; $7F503E - Stats Item Total
|
||||
; $7F503F - Bonk Repeat
|
||||
; $7F5040 - $7F507E - Unused
|
||||
; $7F5040 - Free Item Dialog Temporary
|
||||
; $7F5041 - $7F507E - Unused
|
||||
; $7F507E - Clock Status
|
||||
; $7F507F - Always Zero
|
||||
; $7F5080 - $7F5083 - Clock Hours
|
||||
@@ -1082,6 +1083,7 @@ dw #9999 ; Rupee Limit
|
||||
; $7F5097 - Dialog Offset Pointer Return (High)
|
||||
; $7F50D0 - $7F50FF - Block Cypher Parameters
|
||||
; $7F5100 - $7F51FF - Block Cypher Buffer
|
||||
; $7F5200 - $7F52FF - RNG Pointer Block
|
||||
;
|
||||
; $7F5700 - $7F57FF - Dialog Buffer
|
||||
;================================================================================
|
||||
|
||||
Reference in New Issue
Block a user