diff options
Diffstat (limited to 'scripts/SilphCo11F.asm')
-rwxr-xr-x | scripts/SilphCo11F.asm | 405 |
1 files changed, 405 insertions, 0 deletions
diff --git a/scripts/SilphCo11F.asm b/scripts/SilphCo11F.asm new file mode 100755 index 00000000..483082a1 --- /dev/null +++ b/scripts/SilphCo11F.asm @@ -0,0 +1,405 @@ +SilphCo11F_Script: + call SilphCo11Script_62110 + call EnableAutoTextBoxDrawing + ld hl, SilphCo11TrainerHeader0 + ld de, SilphCo11F_ScriptPointers + ld a, [wSilphCo11FCurScript] + call ExecuteCurMapScriptInTable + ld [wSilphCo11FCurScript], a + ret + +SilphCo11Script_62110: + ld hl, wCurrentMapScriptFlags + bit 5, [hl] + res 5, [hl] + ret z + ld hl, SilphCo11GateCoords + call SilphCo11Script_62137 + call SilphCo11Script_62163 + CheckEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR + ret nz + ld a, $20 + ld [wNewTileBlockID], a + lb bc, 6, 3 + predef_jump ReplaceTileBlock + +SilphCo11GateCoords: + db $06,$03 + db $FF + +SilphCo11Script_62137: + push hl + ld hl, wCardKeyDoorY + ld a, [hli] + ld b, a + ld a, [hl] + ld c, a + xor a + ld [$ffe0], a + pop hl +.asm_62143 + ld a, [hli] + cp $ff + jr z, .asm_6215f + push hl + ld hl, $ffe0 + inc [hl] + pop hl + cp b + jr z, .asm_62154 + inc hl + jr .asm_62143 +.asm_62154 + ld a, [hli] + cp c + jr nz, .asm_62143 + ld hl, wCardKeyDoorY + xor a + ld [hli], a + ld [hl], a + ret +.asm_6215f + xor a + ld [$ffe0], a + ret + +SilphCo11Script_62163: + ld a, [$ffe0] + and a + ret z + SetEvent EVENT_SILPH_CO_11_UNLOCKED_DOOR + ret + +SilphCo11Script_6216d: + ld hl, MissableObjectIDs_6219b +.asm_62170 + ld a, [hli] + cp $ff + jr z, .asm_62181 + push hl + ld [wMissableObjectIndex], a + predef HideObject + pop hl + jr .asm_62170 +.asm_62181 + ld hl, MissableObjectIDs_62194 +.asm_62184 + ld a, [hli] + cp $ff + ret z + push hl + ld [wMissableObjectIndex], a + predef ShowObject + pop hl + jr .asm_62184 + +MissableObjectIDs_62194: + db HS_SAFFRON_CITY_8 + db HS_SAFFRON_CITY_9 + db HS_SAFFRON_CITY_A + db HS_SAFFRON_CITY_B + db HS_SAFFRON_CITY_C + db HS_SAFFRON_CITY_D + db $FF + +MissableObjectIDs_6219b: + db HS_SAFFRON_CITY_1 + db HS_SAFFRON_CITY_2 + db HS_SAFFRON_CITY_3 + db HS_SAFFRON_CITY_4 + db HS_SAFFRON_CITY_5 + db HS_SAFFRON_CITY_6 + db HS_SAFFRON_CITY_7 + db HS_SAFFRON_CITY_E + db HS_SAFFRON_CITY_F + db HS_SILPH_CO_2F_2 + db HS_SILPH_CO_2F_3 + db HS_SILPH_CO_2F_4 + db HS_SILPH_CO_2F_5 + db HS_SILPH_CO_3F_1 + db HS_SILPH_CO_3F_2 + db HS_SILPH_CO_4F_1 + db HS_SILPH_CO_4F_2 + db HS_SILPH_CO_4F_3 + db HS_SILPH_CO_5F_1 + db HS_SILPH_CO_5F_2 + db HS_SILPH_CO_5F_3 + db HS_SILPH_CO_5F_4 + db HS_SILPH_CO_6F_1 + db HS_SILPH_CO_6F_2 + db HS_SILPH_CO_6F_3 + db HS_SILPH_CO_7F_1 + db HS_SILPH_CO_7F_2 + db HS_SILPH_CO_7F_3 + db HS_SILPH_CO_7F_4 + db HS_SILPH_CO_8F_1 + db HS_SILPH_CO_8F_2 + db HS_SILPH_CO_8F_3 + db HS_SILPH_CO_9F_1 + db HS_SILPH_CO_9F_2 + db HS_SILPH_CO_9F_3 + db HS_SILPH_CO_10F_1 + db HS_SILPH_CO_10F_2 + db HS_SILPH_CO_11F_1 + db HS_SILPH_CO_11F_2 + db HS_SILPH_CO_11F_3 + db $FF + +SilphCo11Script_621c4: + xor a + ld [wJoyIgnore], a + +SilphCo11Script_621c8: + ld [wSilphCo11FCurScript], a + ld [wCurMapScript], a + ret + +SilphCo11F_ScriptPointers: + dw SilphCo11Script0 + dw DisplayEnemyTrainerTextAndStartBattle + dw EndTrainerBattle + dw SilphCo11Script3 + dw SilphCo11Script4 + dw SilphCo11Script5 + +SilphCo11Script0: + CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI + ret nz + ld hl, CoordsData_62211 + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + ld a, [wCoordIndex] + ld [wcf0d], a + xor a + ld [hJoyHeld], a + ld a, $f0 + ld [wJoyIgnore], a + ld a, $3 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $3 + ld [H_SPRITEINDEX], a + call SetSpriteMovementBytesToFF + ld de, MovementData_62216 + call MoveSprite + ld a, $3 + jp SilphCo11Script_621c8 + +CoordsData_62211: + db $0D,$06 + db $0C,$07 + db $FF + +MovementData_62216: + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db NPC_MOVEMENT_DOWN + db $FF + +SilphCo11Script_6221a: + ld [wPlayerMovingDirection], a + ld a, $3 + ld [H_SPRITEINDEX], a + ld a, b + ld [hSpriteFacingDirection], a + jp SetSpriteFacingDirectionAndDelay + +SilphCo11Script5: + ld a, [wIsInBattle] + cp $ff + jp z, SilphCo11Script_621c4 + ld a, [wcf0d] + cp $1 + jr z, .asm_6223c + ld a, PLAYER_DIR_LEFT + ld b, SPRITE_FACING_RIGHT + jr .asm_62240 +.asm_6223c + ld a, PLAYER_DIR_UP + ld b, SPRITE_FACING_DOWN +.asm_62240 + call SilphCo11Script_6221a + ld a, $f0 + ld [wJoyIgnore], a + ld a, $6 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + call GBFadeOutToBlack + call SilphCo11Script_6216d + call UpdateSprites + call Delay3 + call GBFadeInFromBlack + SetEvent EVENT_BEAT_SILPH_CO_GIOVANNI + xor a + ld [wJoyIgnore], a + jp SilphCo11Script_621c8 + +SilphCo11Script3: + ld a, [wd730] + bit 0, a + ret nz + ld a, $3 + ld [H_SPRITEINDEX], a + call SetSpriteMovementBytesToFF + ld a, [wcf0d] + cp $1 + jr z, .asm_62284 + ld a, PLAYER_DIR_LEFT + ld b, SPRITE_FACING_RIGHT + jr .asm_62288 +.asm_62284 + ld a, PLAYER_DIR_UP + ld b, SPRITE_FACING_DOWN +.asm_62288 + call SilphCo11Script_6221a + call Delay3 + ld a, $4 + jp SilphCo11Script_621c8 + +SilphCo11Script4: + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, SilphCo10Text_62330 + ld de, SilphCo10Text_62330 + call SaveEndBattleTextPointers + ld a, [H_SPRITEINDEX] + ld [wSpriteIndex], a + call EngageMapTrainer + call InitBattleEnemyParameters + xor a + ld [wJoyIgnore], a + ld a, $5 + jp SilphCo11Script_621c8 + +SilphCo11F_TextPointers: + dw SilphCo11Text1 + dw SilphCo11Text2 + dw SilphCo11Text3 + dw SilphCo11Text4 + dw SilphCo11Text5 + dw SilphCo11Text6 + +SilphCo11TrainerHeader0: + dbEventFlagBit EVENT_BEAT_SILPH_CO_11F_TRAINER_0 + db ($4 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_SILPH_CO_11F_TRAINER_0 + dw SilphCo11BattleText1 ; TextBeforeBattle + dw SilphCo11AfterBattleText1 ; TextAfterBattle + dw SilphCo11EndBattleText1 ; TextEndBattle + dw SilphCo11EndBattleText1 ; TextEndBattle + +SilphCo11TrainerHeader1: + dbEventFlagBit EVENT_BEAT_SILPH_CO_11F_TRAINER_1 + db ($3 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_SILPH_CO_11F_TRAINER_1 + dw SilphCo11BattleText2 ; TextBeforeBattle + dw SilphCo11AfterBattleText2 ; TextAfterBattle + dw SilphCo11EndBattleText2 ; TextEndBattle + dw SilphCo11EndBattleText2 ; TextEndBattle + + db $ff + +SilphCo11Text1: + TX_ASM + CheckEvent EVENT_GOT_MASTER_BALL + jp nz, .asm_62308 + ld hl, SilphCoPresidentText + call PrintText + lb bc, MASTER_BALL, 1 + call GiveItem + jr nc, .BagFull + ld hl, ReceivedSilphCoMasterBallText + call PrintText + SetEvent EVENT_GOT_MASTER_BALL + jr .asm_6230e +.BagFull + ld hl, SilphCoMasterBallNoRoomText + call PrintText + jr .asm_6230e +.asm_62308 + ld hl, SilphCo10Text_6231c + call PrintText +.asm_6230e + jp TextScriptEnd + +SilphCoPresidentText: + TX_FAR _SilphCoPresidentText + db "@" + +ReceivedSilphCoMasterBallText: + TX_FAR _ReceivedSilphCoMasterBallText + TX_SFX_KEY_ITEM + db "@" + +SilphCo10Text_6231c: + TX_FAR _SilphCo10Text_6231c + db "@" + +SilphCoMasterBallNoRoomText: + TX_FAR _SilphCoMasterBallNoRoomText + db "@" + +SilphCo11Text2: + TX_FAR _SilphCo11Text2 + db "@" + +SilphCo11Text3: + TX_FAR _SilphCo11Text3 + db "@" + +SilphCo10Text_62330: + TX_FAR _SilphCo10Text_62330 + db "@" + +SilphCo11Text6: + TX_FAR _SilphCo10Text_62335 + db "@" + +SilphCo11Text4: + TX_ASM + ld hl, SilphCo11TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo11BattleText1: + TX_FAR _SilphCo11BattleText1 + db "@" + +SilphCo11EndBattleText1: + TX_FAR _SilphCo11EndBattleText1 + db "@" + +SilphCo11AfterBattleText1: + TX_FAR _SilphCo11AfterBattleText1 + db "@" + +SilphCo11Text5: + TX_ASM + ld hl, SilphCo11TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SilphCo11BattleText2: + TX_FAR _SilphCo11BattleText2 + db "@" + +SilphCo11EndBattleText2: + TX_FAR _SilphCo11EndBattleText2 + db "@" + +SilphCo11AfterBattleText2: + TX_FAR _SilphCo11AfterBattleText2 + db "@" + +SilphCo10Text_6236c: + TX_ASM + ld hl, SilphCo10Text_6237b + call PrintText + ld a, PORYGON + call DisplayPokedex + jp TextScriptEnd + +SilphCo10Text_6237b: + TX_FAR _SilphCo10Text_6237b + db "@" |