let's dev 2/9/18
bugfixes for shops started implementation for takeany started implementation for inverted
This commit is contained in:
@@ -26,7 +26,7 @@ org $3FFFFF ; <- 1FFFFF
|
|||||||
db #$00 ; expand file to 2mb
|
db #$00 ; expand file to 2mb
|
||||||
|
|
||||||
org $1FFFF8 ; <- FFFF8 timestamp rom
|
org $1FFFF8 ; <- FFFF8 timestamp rom
|
||||||
db #$20, #$18, #$02, #$06 ; year/month/day
|
db #$20, #$18, #$02, #$09 ; year/month/day
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
|
|||||||
24
bugfixes.asm
24
bugfixes.asm
@@ -30,10 +30,30 @@ RTL
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
;0 = Become Permabunny
|
;0 = Become (Perma)bunny
|
||||||
DecideIfBunny:
|
DecideIfBunny:
|
||||||
LDA $7EF357 : BEQ + : RTL : +
|
LDA $7EF357 : BEQ + : RTL : +
|
||||||
LDA $7EF3CA : AND.b #$40 : EOR #$40
|
LDA $7EF3CA : AND.b #$40
|
||||||
|
PHA : LDA.l InvertedMode : BNE .inverted
|
||||||
|
.normal
|
||||||
|
PLA : EOR #$40
|
||||||
|
BRA .done
|
||||||
|
.inverted
|
||||||
|
PLA
|
||||||
|
.done
|
||||||
|
RTL
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
;0 = Become (Perma)bunny
|
||||||
|
DecideIfBunnyByScreenIndex:
|
||||||
|
LDA $7EF357 : BEQ + : RTL : +
|
||||||
|
LDA $8A : AND.b #$40 : PHA
|
||||||
|
LDA.l InvertedMode : BNE .inverted
|
||||||
|
.normal
|
||||||
|
PLA : EOR #$40
|
||||||
|
BRA .done
|
||||||
|
.inverted
|
||||||
|
PLA
|
||||||
|
.done
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
12
hooks.asm
12
hooks.asm
@@ -44,6 +44,18 @@ org $02E21B ; <- 1621B - Bank02.asm : 11211 (STA $040C)
|
|||||||
JSL.l OnDungeonExit : NOP #2
|
JSL.l OnDungeonExit : NOP #2
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Inverted Mode
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $028413 ; <- 10413 - Bank02.asm : 853 (LDA $7EF357 : BNE .notBunny)
|
||||||
|
NOP #6
|
||||||
|
JSL.l DecideIfBunny : db #$D0 ; BNE
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $07AA44 ; <- 3AA44 - Bank07.asm : 853 (LDA $7EF357 : BNE .playerHasMoonPearl)
|
||||||
|
NOP #6
|
||||||
|
JSL.l DecideIfBunnyByScreenIndex : db #$D0 ; BNE
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Hash Key Display
|
; Hash Key Display
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -146,7 +146,9 @@ SpritePrep_ShopKeeper:
|
|||||||
-
|
-
|
||||||
LDA ShopTable+1, X : CMP $A0 : BNE +
|
LDA ShopTable+1, X : CMP $A0 : BNE +
|
||||||
;LDA ShopTable+3, X : CMP $010E : BNE +
|
;LDA ShopTable+3, X : CMP $010E : BNE +
|
||||||
LDA $7F5099 : AND #$00FF : CMP ShopTable+3, X : BNE +
|
LDA ShopTable+5, X : AND.w #$0040 : BNE ++
|
||||||
|
LDA $7F5099 : AND #$00FF : CMP ShopTable+3, X : BNE +
|
||||||
|
++
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
LDA ShopTable, X : STA !SHOP_ID
|
LDA ShopTable, X : STA !SHOP_ID
|
||||||
LDA ShopTable+5, X : STA !SHOP_TYPE
|
LDA ShopTable+5, X : STA !SHOP_TYPE
|
||||||
@@ -154,8 +156,8 @@ SpritePrep_ShopKeeper:
|
|||||||
TXA : LSR #3 : PHA : ASL : !ADD 1,s : STA !SHOP_SRAM_INDEX : PLA
|
TXA : LSR #3 : PHA : ASL : !ADD 1,s : STA !SHOP_SRAM_INDEX : PLA
|
||||||
BRA .success
|
BRA .success
|
||||||
+
|
+
|
||||||
TXA : !ADD.w #$0008 : TAX
|
|
||||||
LDA ShopTable, X : AND.w #$00FF : CMP.w #$00FF : BEQ .fail
|
LDA ShopTable, X : AND.w #$00FF : CMP.w #$00FF : BEQ .fail
|
||||||
|
INX #8
|
||||||
BRA -
|
BRA -
|
||||||
|
|
||||||
.fail
|
.fail
|
||||||
@@ -218,6 +220,8 @@ SpritePrep_ShopKeeper:
|
|||||||
|
|
||||||
LDA.l !SHOP_TYPE : CMP.b #$FF : BNE +
|
LDA.l !SHOP_TYPE : CMP.b #$FF : BNE +
|
||||||
PLA : PLA : PLA
|
PLA : PLA : PLA
|
||||||
|
INC $0BA0, X
|
||||||
|
LDA $0E40, X
|
||||||
JML.l ShopkeeperFinishInit
|
JML.l ShopkeeperFinishInit
|
||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
@@ -345,7 +349,14 @@ Sprite_ShopKeeper:
|
|||||||
JSL.l Sprite_DrawMultiple_quantity_preset
|
JSL.l Sprite_DrawMultiple_quantity_preset
|
||||||
LDA $90 : !ADD.b #$04*2 : STA $90 ; increment oam pointer
|
LDA $90 : !ADD.b #$04*2 : STA $90 ; increment oam pointer
|
||||||
LDA $92 : INC #2 : STA $92
|
LDA $92 : INC #2 : STA $92
|
||||||
|
|
||||||
|
LDA.l !SHOP_TYPE : AND.b #$80 : BEQ + ; Take-any
|
||||||
|
PHX
|
||||||
|
LDA !SHOP_SRAM_INDEX : TAX
|
||||||
|
LDA !SHOP_PURCHASE_COUNTS, X : BEQ ++ : PLX : BRA .done : ++
|
||||||
|
PLX
|
||||||
|
+
|
||||||
|
|
||||||
; Draw Items
|
; Draw Items
|
||||||
JSR.w Shopkeeper_DrawItems
|
JSR.w Shopkeeper_DrawItems
|
||||||
|
|
||||||
@@ -358,7 +369,7 @@ Sprite_ShopKeeper:
|
|||||||
; 0x78 - Center
|
; 0x78 - Center
|
||||||
; 0x90 - Midpoint 2
|
; 0x90 - Midpoint 2
|
||||||
; 0xA8 - Right
|
; 0xA8 - Right
|
||||||
|
.done
|
||||||
PLB
|
PLB
|
||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
@@ -389,9 +400,9 @@ Shopkeeper_SetupHitboxes:
|
|||||||
.no_contact
|
.no_contact
|
||||||
|
|
||||||
JSR.w Setup_ShopItemInteractionHitbox
|
JSR.w Setup_ShopItemInteractionHitbox
|
||||||
JSL.l Utility_CheckIfHitBoxesOverlapLong
|
JSL.l Utility_CheckIfHitBoxesOverlapLong : BCC .no_interaction
|
||||||
BCC .no_interaction
|
|
||||||
LDA $F6 : AND.b #$80 : BEQ .no_interaction ; check for A-press
|
LDA $F6 : AND.b #$80 : BEQ .no_interaction ; check for A-press
|
||||||
|
LDA $10 : CMP.b #$0C : !BGE .no_interaction ; don't interact in other modes besides game action
|
||||||
JSR.w Shopkeeper_BuyItem
|
JSR.w Shopkeeper_BuyItem
|
||||||
.no_interaction
|
.no_interaction
|
||||||
INY #4
|
INY #4
|
||||||
@@ -412,7 +423,6 @@ Shopkeeper_BuyItem:
|
|||||||
CMP.b #$30 : BEQ .refill ; Blue Potion Refill
|
CMP.b #$30 : BEQ .refill ; Blue Potion Refill
|
||||||
BRA +
|
BRA +
|
||||||
.refill
|
.refill
|
||||||
STA $FFFFFF
|
|
||||||
JSL.l Sprite_GetEmptyBottleIndex : BMI .full_bottles
|
JSL.l Sprite_GetEmptyBottleIndex : BMI .full_bottles
|
||||||
+
|
+
|
||||||
|
|
||||||
@@ -428,6 +438,7 @@ Shopkeeper_BuyItem:
|
|||||||
LDA.b #$6B
|
LDA.b #$6B
|
||||||
LDY.b #$01
|
LDY.b #$01
|
||||||
JSL.l Sprite_ShowMessageUnconditional
|
JSL.l Sprite_ShowMessageUnconditional
|
||||||
|
LDA.b #$3C : STA $012E ; error sound
|
||||||
BRA .done
|
BRA .done
|
||||||
.buy
|
.buy
|
||||||
REP #$20 : LDA $7EF360 : !SUB !SHOP_INVENTORY+1, X : STA $7EF360 : SEP #$20 ; Take price away
|
REP #$20 : LDA $7EF360 : !SUB !SHOP_INVENTORY+1, X : STA $7EF360 : SEP #$20 ; Take price away
|
||||||
@@ -435,11 +446,17 @@ Shopkeeper_BuyItem:
|
|||||||
LDA.l !SHOP_INVENTORY+3, X : INC : STA.l !SHOP_INVENTORY+3, X
|
LDA.l !SHOP_INVENTORY+3, X : INC : STA.l !SHOP_INVENTORY+3, X
|
||||||
|
|
||||||
TXA : LSR #2 : TAX
|
TXA : LSR #2 : TAX
|
||||||
LDA.l !SHOP_STATE : ORA.w Shopkeeper_ItemMasks, X : STA.l !SHOP_STATE
|
LDA !SHOP_TYPE : AND.b #$80 : BNE +
|
||||||
PHX
|
LDA.l !SHOP_STATE : ORA.w Shopkeeper_ItemMasks, X : STA.l !SHOP_STATE
|
||||||
TXA : !ADD !SHOP_SRAM_INDEX : TAX
|
PHX
|
||||||
LDA !SHOP_PURCHASE_COUNTS, X : INC : BEQ + : STA !SHOP_PURCHASE_COUNTS, X : +
|
TXA : !ADD !SHOP_SRAM_INDEX : TAX
|
||||||
PLX
|
LDA !SHOP_PURCHASE_COUNTS, X : INC : BEQ +++ : STA !SHOP_PURCHASE_COUNTS, X : +++
|
||||||
|
PLX
|
||||||
|
BRA ++
|
||||||
|
+ ; Take-any
|
||||||
|
LDA.l !SHOP_STATE : ORA.b #$07 : STA.l !SHOP_STATE
|
||||||
|
PHX : LDA !SHOP_SRAM_INDEX : TAX : LDA.b #$01 : STA !SHOP_PURCHASE_COUNTS, X : PLX
|
||||||
|
++
|
||||||
.done
|
.done
|
||||||
PLY : PLX
|
PLY : PLX
|
||||||
RTS
|
RTS
|
||||||
@@ -470,6 +487,10 @@ Setup_ShopItemCollisionHitbox:
|
|||||||
|
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
!ADD.w Shopkeeper_DrawNextItem_item_offsets+2, Y
|
!ADD.w Shopkeeper_DrawNextItem_item_offsets+2, Y
|
||||||
|
PHA : LDA !SHOP_TYPE : AND.w #$0080 : BEQ + ; lower by 4 for Take-any
|
||||||
|
PLA : !ADD.w #$0004
|
||||||
|
BRA ++
|
||||||
|
+ : PLA : ++
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
|
|
||||||
; store hitbox Y Low: $05, High $0B
|
; store hitbox Y Low: $05, High $0B
|
||||||
@@ -554,7 +575,11 @@ Shopkeeper_DrawNextItem:
|
|||||||
TYA : ASL #2 : TAY
|
TYA : ASL #2 : TAY
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA.w .item_offsets, Y : STA.l !SPRITE_OAM
|
LDA.w .item_offsets, Y : STA.l !SPRITE_OAM
|
||||||
LDA.w .item_offsets+2, Y : STA.l !SPRITE_OAM+2
|
LDA !SHOP_TYPE : AND.w #$0080 : BNE +
|
||||||
|
LDA.w .item_offsets+2, Y : STA.l !SPRITE_OAM+2 : BRA ++
|
||||||
|
+
|
||||||
|
LDA.w .item_offsets+2, Y : !ADD.w #$0004 : STA.l !SPRITE_OAM+2
|
||||||
|
++
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
PLY
|
PLY
|
||||||
|
|
||||||
@@ -581,7 +606,9 @@ Shopkeeper_DrawNextItem:
|
|||||||
++
|
++
|
||||||
PHX : PHA : LDA !SCRATCH_TEMP_X : TAX : PLA : JSR.w RequestItemOAM : PLX
|
PHX : PHA : LDA !SCRATCH_TEMP_X : TAX : PLA : JSR.w RequestItemOAM : PLX
|
||||||
|
|
||||||
JSR.w Shopkeeper_DrawNextPrice
|
LDA !SHOP_TYPE : AND.b #$80 : BNE +
|
||||||
|
JSR.w Shopkeeper_DrawNextPrice
|
||||||
|
+
|
||||||
|
|
||||||
.next
|
.next
|
||||||
INY
|
INY
|
||||||
|
|||||||
15
tables.asm
15
tables.asm
@@ -103,7 +103,7 @@ db #$00 ; #$00 = Off (default) - #$01 = On
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308032 ; PC 0x180032
|
org $308032 ; PC 0x180032
|
||||||
OpenMode:
|
OpenMode:
|
||||||
db #$01 ; #$00 = Classic (default) - #$01 = Open
|
db #$01 ; #$00 = Normal (default) - #$01 = Open
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
org $308033 ; PC 0x180033
|
org $308033 ; PC 0x180033
|
||||||
HeartBeep:
|
HeartBeep:
|
||||||
@@ -193,6 +193,10 @@ org $308049 ; PC 0x180049
|
|||||||
MenuCollapse:
|
MenuCollapse:
|
||||||
db #$00 ; #$00 = Press Start (default) - #$10 = Release Start
|
db #$00 ; #$00 = Press Start (default) - #$10 = Release Start
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
org $30804A ; PC 0x18004A
|
||||||
|
InvertedMode:
|
||||||
|
db #$00 ; #$00 = Normal (default) - #$01 = Inverted
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
org $308080 ; PC 0x180080
|
org $308080 ; PC 0x180080
|
||||||
Upgrade5BombsRefill:
|
Upgrade5BombsRefill:
|
||||||
db #$00
|
db #$00
|
||||||
@@ -1236,7 +1240,7 @@ db #$D0 ; #$D0 - Light-to-Dark (Default), #$F0 - Dark-to-Light, #$42 - Both Dire
|
|||||||
org $07A943 ; PC 013A943 (Bank07.asm:6548) (BNE)
|
org $07A943 ; PC 013A943 (Bank07.asm:6548) (BNE)
|
||||||
db #$D0 ; #$D0 - Dark-to-Light (Default), #$F0 - Light-to-Dark, #$42 - Both Directions
|
db #$D0 ; #$D0 - Dark-to-Light (Default), #$F0 - Light-to-Dark, #$42 - Both Directions
|
||||||
;Residual Portal
|
;Residual Portal
|
||||||
org $07A96D ; PC 013A96D (Bank07.asm:6579) (BEQ)
|
org $07A96D ; PC 013A96D (Bank07.asm:6578) (BEQ)
|
||||||
db #$F0 ; #$F0 - Light Side (Default), #$D0 - Dark Side, #$42 - Both Sides
|
db #$F0 ; #$F0 - Light Side (Default), #$D0 - Dark Side, #$42 - Both Sides
|
||||||
org $07A9A7 ; PC 013A9A7 (Bank07.asm:6622) (BNE)
|
org $07A9A7 ; PC 013A9A7 (Bank07.asm:6622) (BNE)
|
||||||
db #$D0 ; #$D0 - Light Side (Default), #$F0 - Dark Side, #$42 - Both Sides
|
db #$D0 ; #$D0 - Light Side (Default), #$F0 - Dark Side, #$42 - Both Sides
|
||||||
@@ -1407,13 +1411,16 @@ ItemSubstitutionRules:
|
|||||||
db $12, $01, $35, $FF
|
db $12, $01, $35, $FF
|
||||||
db $FF, $FF, $FF, $FF
|
db $FF, $FF, $FF, $FF
|
||||||
;================================================================================
|
;================================================================================
|
||||||
;shop_config - t--- --qq
|
;shop_config - td-- --qq
|
||||||
; t - 0=Shop - 1=TakeAny
|
; t - 0=Shop - 1=TakeAny
|
||||||
|
; d - 0=Check Door - 1=Skip Door Check
|
||||||
; qq - # of items for sale
|
; qq - # of items for sale
|
||||||
org $30C800 ; PC 0x184800 - 0x18487F - max 16 shops
|
org $30C800 ; PC 0x184800 - 0x18487F - max 16 shops
|
||||||
ShopTable:
|
ShopTable:
|
||||||
;db [id][roomID-low][roomID-high][doorID][zero][shop_config][pad][pad]
|
;db [id][roomID-low][roomID-high][doorID][zero][shop_config][pad][pad]
|
||||||
db $FF, $FF, $FF, $FF, $00, $03, $00, $00
|
;db $01, $1F, $01, $46, $00, $03, $00, $00 ; Kakariko shop
|
||||||
|
;db $FF, $12, $01, $58, $00, $03, $00, $00
|
||||||
|
db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
|
||||||
org $30C880 ; PC 0x184880 - 0x184FFF - max 240 entries
|
org $30C880 ; PC 0x184880 - 0x184FFF - max 240 entries
|
||||||
ShopContentsTable:
|
ShopContentsTable:
|
||||||
;db [id][item][price-low][price-high][max][repl_id][repl_price-low][repl_price-high]
|
;db [id][item][price-low][price-high][max][repl_id][repl_price-low][repl_price-high]
|
||||||
|
|||||||
Reference in New Issue
Block a user