pokered/scripts/celadongamecorner.asm

528 lines
9.6 KiB
NASM
Executable File

CeladonGameCornerScript:
call CeladonGameCornerScript_48bcf
call CeladonGameCornerScript_48bec
call EnableAutoTextBoxDrawing
ld hl, CeladonGameCornerScriptPointers
ld a, [wCeladonGameCornerCurScript]
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 [wCeladonGameCornerCurScript], a
ld [wCurMapScript], a
ret
CeladonGameCornerScriptPointers:
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 [wCeladonGameCornerCurScript], 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 [wCeladonGameCornerCurScript], a
ret
CeladonGameCornerTextPointers:
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 [wCeladonGameCornerCurScript], 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