diff --git a/scripts/safarizoneentrance-yellow.asm b/scripts/safarizoneentrance-yellow.asm new file mode 100644 index 000000000..93f916202 --- /dev/null +++ b/scripts/safarizoneentrance-yellow.asm @@ -0,0 +1,257 @@ +.xf1f77 + ld hl,.ForJust500Text + call PrintText + ld a,$13 + ld [wd125],a + call DisplayTextBoxID + call YesNoChoice + ld a,[wCurrentMenuItem] + and a + jp nz,.PleaseComeAgain + ld hl,$d346 ; yellow d346 + ld a,[hli] + or [hl] + inc hl + or [hl] + jr nz,.xf1f9f +.xf1f98 + call .xf20ce + jr c,.CantPayWalkDown + jr .xf1ff2 + +.xf1f9f + xor a + ld [$ff9f],a + ld a,$05 + ld [$ffa0],a + ld a,$00 + ld [$ffa1],a + call HasEnoughMoney + jr nc,.success + ld hl,.NotEnoughMoneyText + call PrintText + call .xf2077 + jr c,.CantPayWalkDown + jr .xf1ff2 + +.success + xor a + ld [wSubtrahend],a + ld a,$05 + ld [wSubtrahend+1],a + ld a,$00 + ld [wSubtrahend+2],a + ld hl,wTrainerFacingDirection + ld de,wPlayerMoney + 2 + ld c,3 + predef SubBCDPredef + ld a,$b2 + call $3736 + call $373e + ld a,$13 + ld [wd125],a + call DisplayTextBoxID + ld hl,.MakePaymentText + call PrintText + ld a,30 + ld hl,(502 / $100) << 8 | (502 % $100) +.xf1ff2 + ld [W_NUMSAFARIBALLS],a + ld a,h + ld [wSafariSteps],a + ld a,l + ld [wSafariSteps + 1],a + ld a,$40 + ld c,3 + call SafariZoneEntranceAutoWalk + ld hl,wd790 + set 7,[hl] + res 6,[hl] + ld a,3 + ld [W_SAFARIZONEENTRANCECURSCRIPT],a + jr .done + +.PleaseComeAgain + ld hl,.PleaseComeAgainText + call PrintText +.CantPayWalkDown + ld a,$80 + ld c,1 + call SafariZoneEntranceAutoWalk + ld a,4 + ld [W_SAFARIZONEENTRANCECURSCRIPT],a +.done + ret + +.ForJust500Text + TX_FAR SafariZoneEntranceText_9e6e4 + db "@" + +.MakePaymentText + TX_FAR SafariZoneEntranceText_9e747 + db $b + TX_FAR _SafariZoneEntranceText_75360 + db "@" + +.PleaseComeAgainText + TX_FAR _SafariZoneEntranceText_75365 + db "@" + +.NotEnoughMoneyText + TX_FAR _SafariZoneEntranceText_7536a + db "@" + +.SafariZoneEntranceText2 + ld hl,.FirstTimeQuestionText + call PrintText + call YesNoChoice + ld a,[wCurrentMenuItem] + and a + ld hl,.RegularText + jr nz,.Explanation + ld hl,.ExplanationText +.Explanation + call PrintText + ret + +.FirstTimeQuestionText + TX_FAR _SafariZoneEntranceText_753e6 + db "@" + +.ExplanationText + TX_FAR _SafariZoneEntranceText_753eb + db "@" + +.RegularText + TX_FAR _SafariZoneEntranceText_753f0 + db "@" + +SafariZoneEntranceAutoWalk: + push af + ld b,0 + ld a,c + ld [wSimulatedJoypadStatesIndex],a + ld hl,wSimulatedJoypadStatesEnd + pop af + call FillMemory + jp StartSimulatingJoypadStates + +.xf2077 + ld hl,$d346 + ld de,$ff9f + ld bc,3 + call $1b + xor a + ld [$ffa2],a + ld [$ffa3],a + ld a,$17 + ld [$ffa4],a + ld a,$d + call $3eb4 + ld a,[$ffa4] + call .xf211e + pop af + ld hl,$d346 + xor a + ld bc,3 + call $166e + ld hl,.OhAllRightText + call $3c46 + ld a,$13 + ld a,[$d124] + call $3010 + ld hl,.CantGive30BallsText + call PrintText + pop af + inc a + jr z,.xf20bd + cp $1d + jr c,.xf20bf +.xf20bd + ld a,$1d +.xf20bf + ld hl,$1f6 + and a + ret + +.OhAllRightText + TX_FAR _SafariZoneLowCostText1 + db "@" + +.CantGive30BallsText + TX_FAR _SafariZoneLowCostText2 + db "@" + +.xf20ce + ld hl,$d70c + ld a,[hl] + push af + inc [hl] + ld e,a + ld d,0 + ld hl,.lowcosttextpointers + add hl,de + add hl,de + ld a,[hli] + ld h,[hl] + ld l,a + call PrintText + pop af + cp 3 + jr z,.next + scf + ret + +.next + ld hl,.xf20f6 + call $3c46 + ld a,1 + ld hl,$01f6 + and a + ret + +.xf20f6 + TX_FAR _SafariZoneLowCostText3 + db $b + TX_FAR _SafariZoneLowCostText4 + db "@" + +.lowcosttextpointers + dw .xf210a + dw .xf210f + dw .xf2114 + dw .xf2119 + dw .xf2119 + +.xf210a + TX_FAR _SafariZoneLowCostText5 + db "@" + +.xf210f + TX_FAR _SafariZoneLowCostText6 + db "@" + +.xf2114 + TX_FAR _SafariZoneLowCostText7 + db "@" + +.xf2119 + TX_FAR _SafariZoneLowCostText8 + db "@" + +.xf211e + push hl + ld c,a + and $f + ld l,a + ld h,0 + ld a,c + and $f0 + swap a + ld bc,$a + call $3a74 + ld a,l + pop hl + ret + +.xf2133 diff --git a/scripts/safarizoneentrance.asm b/scripts/safarizoneentrance.asm index 8ae81f817..e5653ff1b 100755 --- a/scripts/safarizoneentrance.asm +++ b/scripts/safarizoneentrance.asm @@ -5,16 +5,16 @@ SafariZoneEntranceScript: ; 751cd (1d:51cd) jp CallFunctionInTable SafariZoneEntranceScriptPointers: ; 751d9 (1d:51d9) - dw SafariZoneEntranceScript0 - dw SafariZoneEntranceScript1 - dw SafariZoneEntranceScript2 - dw SafariZoneEntranceScript3 - dw SafariZoneEntranceScript4 - dw SafariZoneEntranceScript5 - dw SafariZoneEntranceScript6 + dw .SafariZoneEntranceScript0 + dw .SafariZoneEntranceScript1 + dw .SafariZoneEntranceScript2 + dw .SafariZoneEntranceScript3 + dw .SafariZoneEntranceScript4 + dw .SafariZoneEntranceScript5 + dw .SafariZoneEntranceScript6 -SafariZoneEntranceScript0: ; 751e7 (1d:51e7) - ld hl, CoordsData_75221 +.SafariZoneEntranceScript0 + ld hl, .CoordsData_75221 call ArePlayerCoordsInArray ret nc ld a, $3 @@ -35,22 +35,22 @@ SafariZoneEntranceScript0: ; 751e7 (1d:51e7) .asm_7520f ld a, $10 ld c, $1 - call SafariZoneEntranceScript_752a3 + call SafariZoneEntranceAutoWalk ld a, $f0 ld [wJoyIgnore], a ld a, $1 ld [W_SAFARIZONEENTRANCECURSCRIPT], a ret -CoordsData_75221: ; 75221 (1d:5221) +.CoordsData_75221: ; 75221 (1d:5221) db $02,$03 db $02,$04 db $FF -SafariZoneEntranceScript1: ; 75226 (1d:5226) +.SafariZoneEntranceScript1 call SafariZoneEntranceScript_752b4 ret nz -SafariZoneEntranceScript2: ; 7522a (1d:522a) +.SafariZoneEntranceScript2 xor a ld [hJoyHeld], a ld [wJoyIgnore], a @@ -62,7 +62,7 @@ SafariZoneEntranceScript2: ; 7522a (1d:522a) ld [wJoyIgnore], a ret -SafariZoneEntranceScript3: ; 75240 (1d:5240) +.SafariZoneEntranceScript3 call SafariZoneEntranceScript_752b4 ret nz xor a @@ -71,7 +71,7 @@ SafariZoneEntranceScript3: ; 75240 (1d:5240) ld [W_SAFARIZONEENTRANCECURSCRIPT], a ret -SafariZoneEntranceScript5: ; 7524e (1d:524e) +.SafariZoneEntranceScript5 ld a, $4 ld [wd528], a ld hl, wd790 @@ -89,7 +89,7 @@ SafariZoneEntranceScript5: ; 7524e (1d:524e) ld [W_NUMSAFARIBALLS], a ld a, $80 ld c, $3 - call SafariZoneEntranceScript_752a3 + call SafariZoneEntranceAutoWalk ld a, $4 ld [W_SAFARIZONEENTRANCECURSCRIPT], a jr .asm_75286 ; 0x7527d $7 @@ -100,7 +100,7 @@ SafariZoneEntranceScript5: ; 7524e (1d:524e) .asm_75286 ret -SafariZoneEntranceScript4: ; 75287 (1d:5287) +.SafariZoneEntranceScript4 call SafariZoneEntranceScript_752b4 ret nz xor a @@ -109,7 +109,7 @@ SafariZoneEntranceScript4: ; 75287 (1d:5287) ld [W_SAFARIZONEENTRANCECURSCRIPT], a ret -SafariZoneEntranceScript6: ; 75295 (1d:5295) +.SafariZoneEntranceScript6 call SafariZoneEntranceScript_752b4 ret nz call Delay3 @@ -117,128 +117,127 @@ SafariZoneEntranceScript6: ; 75295 (1d:5295) ld [W_SAFARIZONEENTRANCECURSCRIPT], a ret -SafariZoneEntranceScript_752a3: ; 752a3 (1d:52a3) +SafariZoneEntranceAutoWalk: push af - ld b, $0 - ld a, c - ld [wSimulatedJoypadStatesIndex], a - ld hl, wSimulatedJoypadStatesEnd + ld b,0 + ld a,c + ld [wSimulatedJoypadStatesIndex],a + ld hl,wSimulatedJoypadStatesEnd pop af call FillMemory jp StartSimulatingJoypadStates -SafariZoneEntranceScript_752b4: ; 752b4 (1d:52b4) +SafariZoneEntranceScript_752b4: ld a, [wSimulatedJoypadStatesIndex] and a ret SafariZoneEntranceTextPointers: ; 752b9 (1d:52b9) - dw SafariZoneEntranceText1 - dw SafariZoneEntranceText2 - dw SafariZoneEntranceText3 - dw SafariZoneEntranceText4 - dw SafariZoneEntranceText5 - dw SafariZoneEntranceText6 + dw .SafariZoneEntranceText1 + dw .SafariZoneEntranceText2 + dw .SafariZoneEntranceText1 + dw .SafariZoneEntranceText4 + dw .SafariZoneEntranceText5 + dw .SafariZoneEntranceText6 -SafariZoneEntranceText3: ; 752c5 (1d:52c5) -SafariZoneEntranceText1: ; 752c5 (1d:52c5) +.SafariZoneEntranceText1 TX_FAR _SafariZoneEntranceText1 db "@" -SafariZoneEntranceText4: ; 752ca (1d:52ca) +.SafariZoneEntranceText4 TX_FAR SafariZoneEntranceText_9e6e4 ; 0x9e6e4 db $8 ld a, $13 - ld [wd125], a + ld [wd125],a call DisplayTextBoxID call YesNoChoice - ld a, [wCurrentMenuItem] + ld a,[wCurrentMenuItem] and a - jp nz, .asm_75346 + jp nz,.PleaseComeAgain xor a - ld [$ff9f], a - ld a, $5 - ld [$ffa0], a - ld a, $0 - ld [$ffa1], a + ld [$ff9f],a + ld a,$05 + ld [$ffa0],a + ld a,$00 + ld [$ffa1],a call HasEnoughMoney - jr nc, .asm_752f9 ; 0x752ef $8 - ld hl, SafariZoneEntranceText_7536a + jr nc,.success + ld hl,.NotEnoughMoneyText call PrintText - jr .asm_7534c ; 0x752f7 $53 -.asm_752f9 + jr .CantPayWalkDown + +.success xor a - ld [wWhichTrade], a - ld a, $5 - ld [wTrainerEngageDistance], a - ld a, $0 - ld [wTrainerFacingDirection], a - ld hl, wTrainerFacingDirection - ld de, wPlayerMoney + 2 - ld c, $3 + ld [wSubtrahend],a + ld a,$05 + ld [wSubtrahend+1],a + ld a,$00 + ld [wSubtrahend+2],a + ld hl,wTrainerFacingDirection + ld de,wPlayerMoney + 2 + ld c,3 predef SubBCDPredef - ld a, $13 - ld [wd125], a + ld a,$13 + ld [wd125],a call DisplayTextBoxID - ld hl, SafariZoneEntranceText_7535b + ld hl,.MakePaymentText call PrintText - ld a, $1e - ld [W_NUMSAFARIBALLS], a - ld a, 502 / $100 - ld [wSafariSteps], a + ld a,30 + ld [W_NUMSAFARIBALLS],a + ld a,502 / $100 + ld [wSafariSteps],a ld a, 502 % $100 - ld [wSafariSteps + 1], a - ld a, $40 - ld c, $3 - call SafariZoneEntranceScript_752a3 - ld hl, wd790 - set 7, [hl] - res 6, [hl] - ld a, $3 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a - jr .asm_75358 ; 0x75344 $12 -.asm_75346 - ld hl, SafariZoneEntranceText_75365 + ld [wSafariSteps + 1],a + ld a,$40 + ld c,3 + call SafariZoneEntranceAutoWalk + ld hl,wd790 + set 7,[hl] + res 6,[hl] + ld a,3 + ld [W_SAFARIZONEENTRANCECURSCRIPT],a + jr .done + +.PleaseComeAgain + ld hl,.PleaseComeAgainText call PrintText -.asm_7534c - ld a, $80 - ld c, $1 - call SafariZoneEntranceScript_752a3 - ld a, $4 - ld [W_SAFARIZONEENTRANCECURSCRIPT], a -.asm_75358 +.CantPayWalkDown + ld a,$80 + ld c,1 + call SafariZoneEntranceAutoWalk + ld a,4 + ld [W_SAFARIZONEENTRANCECURSCRIPT],a +.done jp TextScriptEnd -SafariZoneEntranceText_7535b: ; 7535b (1d:535b) - TX_FAR SafariZoneEntranceText_9e747 ; 0x9e747 - db $0B - -SafariZoneEntranceText_75360: ; 75360 (1d:5360) +.MakePaymentText + TX_FAR SafariZoneEntranceText_9e747 + db $b TX_FAR _SafariZoneEntranceText_75360 db "@" -SafariZoneEntranceText_75365: ; 75365 (1d:5365) +.PleaseComeAgainText TX_FAR _SafariZoneEntranceText_75365 db "@" -SafariZoneEntranceText_7536a: ; 7536a (1d:536a) +.NotEnoughMoneyText TX_FAR _SafariZoneEntranceText_7536a db "@" -SafariZoneEntranceText5: ; 7536f (1d:536f) +.SafariZoneEntranceText5 TX_FAR SafariZoneEntranceText_9e814 ; 0x9e814 db $8 call YesNoChoice - ld a, [wCurrentMenuItem] + ld a,[wCurrentMenuItem] and a jr nz, .asm_7539c ; 0x7537b $1f - ld hl, SafariZoneEntranceText_753bb + ld hl, .SafariZoneEntranceText_753bb call PrintText xor a ld [wSpriteStateData1 + 9], a ld a, $80 ld c, $3 - call SafariZoneEntranceScript_752a3 + call SafariZoneEntranceAutoWalk ld hl, wd790 res 6, [hl] res 7, [hl] @@ -246,13 +245,13 @@ SafariZoneEntranceText5: ; 7536f (1d:536f) ld [wcf0d], a jr .asm_753b3 ; 0x7539a $17 .asm_7539c - ld hl, SafariZoneEntranceText_753c0 + ld hl, .SafariZoneEntranceText_753c0 call PrintText ld a, $4 ld [wSpriteStateData1 + 9], a ld a, $40 ld c, $1 - call SafariZoneEntranceScript_752a3 + call SafariZoneEntranceAutoWalk ld a, $5 ld [wcf0d], a .asm_753b3 @@ -260,40 +259,40 @@ SafariZoneEntranceText5: ; 7536f (1d:536f) ld [W_SAFARIZONEENTRANCECURSCRIPT], a jp TextScriptEnd -SafariZoneEntranceText_753bb: ; 753bb (1d:53bb) +.SafariZoneEntranceText_753bb TX_FAR _SafariZoneEntranceText_753bb db "@" -SafariZoneEntranceText_753c0: ; 753c0 (1d:53c0) +.SafariZoneEntranceText_753c0 TX_FAR _SafariZoneEntranceText_753c0 db "@" -SafariZoneEntranceText6: ; 753c5 (1d:53c5) +.SafariZoneEntranceText6 TX_FAR _SafariZoneEntranceText_753c5 db "@" -SafariZoneEntranceText2: ; 753ca (1d:53ca) +.SafariZoneEntranceText2 db $08 ; asm - ld hl, SafariZoneEntranceText_753e6 + ld hl,.FirstTimeQuestionText call PrintText call YesNoChoice - ld a, [wCurrentMenuItem] + ld a,[wCurrentMenuItem] and a - ld hl, SafariZoneEntranceText_753f0 - jr nz, .asm_278a6 ; 0x753db - ld hl, SafariZoneEntranceText_753eb -.asm_278a6 ; 0x753e0 + ld hl,.RegularText + jr nz,.Explanation + ld hl,.ExplanationText +.Explanation call PrintText jp TextScriptEnd -SafariZoneEntranceText_753e6: ; 753e6 (1d:53e6) +.FirstTimeQuestionText TX_FAR _SafariZoneEntranceText_753e6 db "@" -SafariZoneEntranceText_753eb: ; 753eb (1d:53eb) +.ExplanationText TX_FAR _SafariZoneEntranceText_753eb db "@" -SafariZoneEntranceText_753f0: ; 753f0 (1d:53f0) +.RegularText TX_FAR _SafariZoneEntranceText_753f0 db "@" diff --git a/text/maps/safari_zone_entrance.asm b/text/maps/safari_zone_entrance.asm index 119d23019..79f70ea4a 100644 --- a/text/maps/safari_zone_entrance.asm +++ b/text/maps/safari_zone_entrance.asm @@ -92,3 +92,49 @@ _SafariZoneEntranceText_753f0:: ; 9e993 (27:6993) line "regular here!" done +IF DEF(_OPTION_LOWCOST_SAFARI) +_SafariZoneLowCostText1:: + db 0 + para "Oh, all right, pay" + line "me what you have." + prompt + +_SafariZoneLowCostText2:: + text "But, I can't give" + line "you all 30 BALLs." + done + +_SafariZoneLowCostText3:: + db 0 + para "You're persistent," + line "aren't you?" + + para "OK, you can go in" + line "for free, but" + cont "just this once!@@" + +_SafariZoneLowCostText4:: + db 0 + done + +_SafariZoneLowCostText5:: + text "I'm sorry, but you" + line "have to pay to" + cont "enter." + done + +_SafariZoneLowCostText6:: + text "You can't enter" + line "without paying!" + done + +_SafariZoneLowCostText7:: + text "I said, no money," + line "no entry!" + done + +_SafariZoneLowCostText8:: + text "Read my lips, NO!" + line "Get it?" + done +ENDC diff --git a/wram.asm b/wram.asm index 15c339d14..86d101528 100755 --- a/wram.asm +++ b/wram.asm @@ -510,6 +510,9 @@ wPlayerSpinWhileMovingUpOrDownAnimDeltaY:: ; cd3d wHiddenObjectFunctionArgument:: ; cd3d +wSubtrahend:: ; cd3d +; subtract (BCD) wSubtrahend, wSubtrahend+1, wSubtrahend+2 + wWhichTrade:: ; cd3d ; which entry from TradeMons to select