summaryrefslogtreecommitdiff
path: root/scripts/GameCorner.asm
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/GameCorner.asm')
-rwxr-xr-xscripts/GameCorner.asm527
1 files changed, 527 insertions, 0 deletions
diff --git a/scripts/GameCorner.asm b/scripts/GameCorner.asm
new file mode 100755
index 00000000..265508e0
--- /dev/null
+++ b/scripts/GameCorner.asm
@@ -0,0 +1,527 @@
+GameCorner_Script:
+ call CeladonGameCornerScript_48bcf
+ call CeladonGameCornerScript_48bec
+ call EnableAutoTextBoxDrawing
+ ld hl, GameCorner_ScriptPointers
+ ld a, [wGameCornerCurScript]
+ jp CallFunctionInTable
+
+CeladonGameCornerScript_48bcf:
+ ld hl, wCurrentMapScriptFlags
+ bit 6, [hl]
+ res 6, [hl]
+ ret z
+ call Random
+ ld a, [hRandomAdd]
+ cp $7
+ jr nc, .asm_48be2
+ ld a, $8
+.asm_48be2
+ srl a
+ srl a
+ srl a
+ ld [wLuckySlotHiddenObjectIndex], a
+ ret
+
+CeladonGameCornerScript_48bec:
+ ld hl, wCurrentMapScriptFlags
+ bit 5, [hl]
+ res 5, [hl]
+ ret z
+ CheckEvent EVENT_FOUND_ROCKET_HIDEOUT
+ ret nz
+ ld a, $2a
+ ld [wNewTileBlockID], a
+ lb bc, 2, 8
+ predef_jump ReplaceTileBlock
+
+CeladonGameCornerScript_48c07:
+ xor a
+ ld [wJoyIgnore], a
+ ld [wGameCornerCurScript], a
+ ld [wCurMapScript], a
+ ret
+
+GameCorner_ScriptPointers:
+ dw CeladonGameCornerScript0
+ dw CeladonGameCornerScript1
+ dw CeladonGameCornerScript2
+
+CeladonGameCornerScript0:
+ ret
+
+CeladonGameCornerScript1:
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, CeladonGameCornerScript_48c07
+ ld a, $f0
+ ld [wJoyIgnore], a
+ ld a, $d
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, $b
+ ld [H_SPRITEINDEX], a
+ call SetSpriteMovementBytesToFF
+ ld de, MovementData_48c5a
+ ld a, [wYCoord]
+ cp $6
+ jr nz, .asm_48c43
+ ld de, MovementData_48c63
+ jr .asm_48c4d
+.asm_48c43
+ ld a, [wXCoord]
+ cp $8
+ jr nz, .asm_48c4d
+ ld de, MovementData_48c63
+.asm_48c4d
+ ld a, $b
+ ld [H_SPRITEINDEX], a
+ call MoveSprite
+ ld a, $2
+ ld [wGameCornerCurScript], a
+ ret
+
+MovementData_48c5a:
+ db NPC_MOVEMENT_DOWN
+ db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_UP
+ db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_RIGHT
+ db $FF
+
+MovementData_48c63:
+ db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_RIGHT
+ db NPC_MOVEMENT_RIGHT
+ db $FF
+
+CeladonGameCornerScript2:
+ ld a, [wd730]
+ bit 0, a
+ ret nz
+ xor a
+ ld [wJoyIgnore], a
+ ld a, HS_GAME_CORNER_ROCKET
+ ld [wMissableObjectIndex], a
+ predef HideObject
+ ld hl, wCurrentMapScriptFlags
+ set 5, [hl]
+ set 6, [hl]
+ ld a, $0
+ ld [wGameCornerCurScript], a
+ ret
+
+GameCorner_TextPointers:
+ dw CeladonGameCornerText1
+ dw CeladonGameCornerText2
+ dw CeladonGameCornerText3
+ dw CeladonGameCornerText4
+ dw CeladonGameCornerText5
+ dw CeladonGameCornerText6
+ dw CeladonGameCornerText7
+ dw CeladonGameCornerText8
+ dw CeladonGameCornerText9
+ dw CeladonGameCornerText10
+ dw CeladonGameCornerText11
+ dw CeladonGameCornerText12
+ dw CeladonGameCornerText13
+
+CeladonGameCornerText1:
+ TX_FAR _CeladonGameCornerText1
+ db "@"
+
+CeladonGameCornerText2:
+ TX_ASM
+ call CeladonGameCornerScript_48f1e
+ ld hl, CeladonGameCornerText_48d22
+ call PrintText
+ call YesNoChoice
+ ld a, [wCurrentMenuItem]
+ and a
+ jr nz, .asm_48d0f
+ ld b, COIN_CASE
+ call IsItemInBag
+ jr z, .asm_48d19
+ call Has9990Coins
+ jr nc, .asm_48d14
+ xor a
+ ld [hMoney], a
+ ld [hMoney + 2], a
+ ld a, $10
+ ld [hMoney + 1], a
+ call HasEnoughMoney
+ jr nc, .asm_48cdb
+ ld hl, CeladonGameCornerText_48d31
+ jr .asm_48d1c
+.asm_48cdb
+ xor a
+ ld [hMoney], a
+ ld [hMoney + 2], a
+ ld a, $10
+ ld [hMoney + 1], a
+ ld hl, hMoney + 2
+ ld de, wPlayerMoney + 2
+ ld c, $3
+ predef SubBCDPredef
+ xor a
+ ld [hUnusedCoinsByte], a
+ ld [hCoins], a
+ ld a, $50
+ ld [hCoins + 1], a
+ ld de, wPlayerCoins + 1
+ ld hl, hCoins + 1
+ ld c, $2
+ predef AddBCDPredef
+ call CeladonGameCornerScript_48f1e
+ ld hl, CeladonGameCornerText_48d27
+ jr .asm_48d1c
+.asm_48d0f
+ ld hl, CeladonGameCornerText_48d2c
+ jr .asm_48d1c
+.asm_48d14
+ ld hl, CeladonGameCornerText_48d36
+ jr .asm_48d1c
+.asm_48d19
+ ld hl, CeladonGameCornerText_48d3b
+.asm_48d1c
+ call PrintText
+ jp TextScriptEnd
+
+CeladonGameCornerText_48d22:
+ TX_FAR _CeladonGameCornerText_48d22
+ db "@"
+
+CeladonGameCornerText_48d27:
+ TX_FAR _CeladonGameCornerText_48d27
+ db "@"
+
+CeladonGameCornerText_48d2c:
+ TX_FAR _CeladonGameCornerText_48d2c
+ db "@"
+
+CeladonGameCornerText_48d31:
+ TX_FAR _CeladonGameCornerText_48d31
+ db "@"
+
+CeladonGameCornerText_48d36:
+ TX_FAR _CeladonGameCornerText_48d36
+ db "@"
+
+CeladonGameCornerText_48d3b:
+ TX_FAR _CeladonGameCornerText_48d3b
+ db "@"
+
+CeladonGameCornerText3:
+ TX_FAR _CeladonGameCornerText3
+ db "@"
+
+CeladonGameCornerText4:
+ TX_FAR _CeladonGameCornerText4
+ db "@"
+
+CeladonGameCornerText5:
+ TX_ASM
+ CheckEvent EVENT_GOT_10_COINS
+ jr nz, .asm_48d89
+ ld hl, CeladonGameCornerText_48d9c
+ call PrintText
+ ld b, COIN_CASE
+ call IsItemInBag
+ jr z, .asm_48d93
+ call Has9990Coins
+ jr nc, .asm_48d8e
+ xor a
+ ld [hUnusedCoinsByte], a
+ ld [hCoins], a
+ ld a, $10
+ ld [hCoins + 1], a
+ ld de, wPlayerCoins + 1
+ ld hl, hCoins + 1
+ ld c, $2
+ predef AddBCDPredef
+ SetEvent EVENT_GOT_10_COINS
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, Received10CoinsText
+ jr .asm_48d96
+.asm_48d89
+ ld hl, CeladonGameCornerText_48dac
+ jr .asm_48d96
+.asm_48d8e
+ ld hl, CeladonGameCornerText_48da7
+ jr .asm_48d96
+.asm_48d93
+ ld hl, CeladonGameCornerText_48f19
+.asm_48d96
+ call PrintText
+ jp TextScriptEnd
+
+CeladonGameCornerText_48d9c:
+ TX_FAR _CeladonGameCornerText_48d9c
+ db "@"
+
+Received10CoinsText:
+ TX_FAR _Received10CoinsText
+ TX_SFX_ITEM_1
+ db "@"
+
+CeladonGameCornerText_48da7:
+ TX_FAR _CeladonGameCornerText_48da7
+ db "@"
+
+CeladonGameCornerText_48dac:
+ TX_FAR _CeladonGameCornerText_48dac
+ db "@"
+
+CeladonGameCornerText6:
+ TX_FAR _CeladonGameCornerText6
+ db "@"
+
+CeladonGameCornerText7:
+ TX_ASM
+ CheckEvent EVENT_BEAT_ERIKA
+ ld hl, CeladonGameCornerText_48dca
+ jr z, .asm_48dc4
+ ld hl, CeladonGameCornerText_48dcf
+.asm_48dc4
+ call PrintText
+ jp TextScriptEnd
+
+CeladonGameCornerText_48dca:
+ TX_FAR _CeladonGameCornerText_48dca
+ db "@"
+
+CeladonGameCornerText_48dcf:
+ TX_FAR _CeladonGameCornerText_48dcf
+ db "@"
+
+CeladonGameCornerText8:
+ TX_FAR _CeladonGameCornerText8
+ db "@"
+
+CeladonGameCornerText9:
+ TX_ASM
+ CheckEvent EVENT_GOT_20_COINS_2
+ jr nz, .asm_48e13
+ ld hl, CeladonGameCornerText_48e26
+ call PrintText
+ ld b, COIN_CASE
+ call IsItemInBag
+ jr z, .asm_48e1d
+ call Has9990Coins
+ jr nc, .asm_48e18
+ xor a
+ ld [hUnusedCoinsByte], a
+ ld [hCoins], a
+ ld a, $20
+ ld [hCoins + 1], a
+ ld de, wPlayerCoins + 1
+ ld hl, hCoins + 1
+ ld c, $2
+ predef AddBCDPredef
+ SetEvent EVENT_GOT_20_COINS_2
+ ld hl, Received20CoinsText
+ jr .asm_48e20
+.asm_48e13
+ ld hl, CeladonGameCornerText_48e36
+ jr .asm_48e20
+.asm_48e18
+ ld hl, CeladonGameCornerText_48e31
+ jr .asm_48e20
+.asm_48e1d
+ ld hl, CeladonGameCornerText_48f19
+.asm_48e20
+ call PrintText
+ jp TextScriptEnd
+
+CeladonGameCornerText_48e26:
+ TX_FAR _CeladonGameCornerText_48e26
+ db "@"
+
+Received20CoinsText:
+ TX_FAR _Received20CoinsText
+ TX_SFX_ITEM_1
+ db "@"
+
+CeladonGameCornerText_48e31:
+ TX_FAR _CeladonGameCornerText_48e31
+ db "@"
+
+CeladonGameCornerText_48e36:
+ TX_FAR _CeladonGameCornerText_48e36
+ db "@"
+
+CeladonGameCornerText10:
+ TX_ASM
+ CheckEvent EVENT_GOT_20_COINS
+ jr nz, .asm_48e75
+ ld hl, CeladonGameCornerText_48e88
+ call PrintText
+ ld b, COIN_CASE
+ call IsItemInBag
+ jr z, .asm_48e7f
+ call Has9990Coins
+ jr z, .asm_48e7a
+ xor a
+ ld [hUnusedCoinsByte], a
+ ld [hCoins], a
+ ld a, $20
+ ld [hCoins + 1], a
+ ld de, wPlayerCoins + 1
+ ld hl, hCoins + 1
+ ld c, $2
+ predef AddBCDPredef
+ SetEvent EVENT_GOT_20_COINS
+ ld hl, CeladonGameCornerText_48e8d
+ jr .asm_48e82
+.asm_48e75
+ ld hl, CeladonGameCornerText_48e98
+ jr .asm_48e82
+.asm_48e7a
+ ld hl, CeladonGameCornerText_48e93
+ jr .asm_48e82
+.asm_48e7f
+ ld hl, CeladonGameCornerText_48f19
+.asm_48e82
+ call PrintText
+ jp TextScriptEnd
+
+CeladonGameCornerText_48e88:
+ TX_FAR _CeladonGameCornerText_48e88
+ db "@"
+
+CeladonGameCornerText_48e8d:
+ TX_FAR _CeladonGameCornerText_48e8d
+ TX_SFX_ITEM_1
+ db "@"
+
+CeladonGameCornerText_48e93:
+ TX_FAR _CeladonGameCornerText_48e93
+ db "@"
+
+CeladonGameCornerText_48e98:
+ TX_FAR _CeladonGameCornerText_48e98
+ db "@"
+
+CeladonGameCornerText11:
+ TX_ASM
+ ld hl, CeladonGameCornerText_48ece
+ call PrintText
+ ld hl, wd72d
+ set 6, [hl]
+ set 7, [hl]
+ ld hl, CeladonGameCornerText_48ed3
+ ld de, CeladonGameCornerText_48ed3
+ call SaveEndBattleTextPointers
+ ld a, [H_SPRITEINDEX]
+ ld [wSpriteIndex], a
+ call EngageMapTrainer
+ call InitBattleEnemyParameters
+ xor a
+ ld [hJoyHeld], a
+ ld [hJoyPressed], a
+ ld [hJoyReleased], a
+ ld a, $1
+ ld [wGameCornerCurScript], a
+ jp TextScriptEnd
+
+CeladonGameCornerText_48ece:
+ TX_FAR _CeladonGameCornerText_48ece
+ db "@"
+
+CeladonGameCornerText_48ed3:
+ TX_FAR _CeladonGameCornerText_48ed3
+ db "@"
+
+CeladonGameCornerText13:
+ TX_FAR _CeladonGameCornerText_48ed8
+ db "@"
+
+CeladonGameCornerText12:
+ TX_ASM
+ ld a, $1
+ ld [wDoNotWaitForButtonPressAfterDisplayingText], a
+ ld hl, CeladonGameCornerText_48f09
+ call PrintText
+ call WaitForSoundToFinish
+ ld a, SFX_GO_INSIDE
+ call PlaySound
+ call WaitForSoundToFinish
+ SetEvent EVENT_FOUND_ROCKET_HIDEOUT
+ ld a, $43
+ ld [wNewTileBlockID], a
+ lb bc, 2, 8
+ predef ReplaceTileBlock
+ jp TextScriptEnd
+
+CeladonGameCornerText_48f09:
+ TX_FAR _CeladonGameCornerText_48f09
+ TX_ASM
+ ld a, SFX_SWITCH
+ call PlaySound
+ call WaitForSoundToFinish
+ jp TextScriptEnd
+
+CeladonGameCornerText_48f19:
+ TX_FAR _CeladonGameCornerText_48f19
+ db "@"
+
+CeladonGameCornerScript_48f1e:
+ ld hl, wd730
+ set 6, [hl]
+ coord hl, 11, 0
+ ld b, $5
+ ld c, $7
+ call TextBoxBorder
+ call UpdateSprites
+ coord hl, 12, 1
+ ld b, 4
+ ld c, 7
+ call ClearScreenArea
+ coord hl, 12, 2
+ ld de, GameCornerMoneyText
+ call PlaceString
+ coord hl, 12, 3
+ ld de, GameCornerBlankText1
+ call PlaceString
+ coord hl, 12, 3
+ ld de, wPlayerMoney
+ ld c, $a3
+ call PrintBCDNumber
+ coord hl, 12, 4
+ ld de, GameCornerCoinText
+ call PlaceString
+ coord hl, 12, 5
+ ld de, GameCornerBlankText2
+ call PlaceString
+ coord hl, 15, 5
+ ld de, wPlayerCoins
+ ld c, $82
+ call PrintBCDNumber
+ ld hl, wd730
+ res 6, [hl]
+ ret
+
+GameCornerMoneyText:
+ db "MONEY@"
+
+GameCornerCoinText:
+ db "COIN@"
+
+GameCornerBlankText1:
+ db " @"
+
+GameCornerBlankText2:
+ db " @"
+
+Has9990Coins:
+ ld a, $99
+ ld [hCoins], a
+ ld a, $90
+ ld [hCoins + 1], a
+ jp HasEnoughCoins