diff options
Diffstat (limited to 'scripts/SilphCo7F.asm')
-rwxr-xr-x | scripts/SilphCo7F.asm | 527 |
1 files changed, 527 insertions, 0 deletions
diff --git a/scripts/SilphCo7F.asm b/scripts/SilphCo7F.asm new file mode 100755 index 00000000..e7594663 --- /dev/null +++ b/scripts/SilphCo7F.asm @@ -0,0 +1,527 @@ +SilphCo7F_Script: + call SilphCo7Script_51b77 + call EnableAutoTextBoxDrawing + ld hl, SilphCo7TrainerHeader0 + ld de, SilphCo7F_ScriptPointers + ld a, [wSilphCo7FCurScript] + call ExecuteCurMapScriptInTable + ld [wSilphCo7FCurScript], a + ret + +SilphCo7Script_51b77: + ld hl, wCurrentMapScriptFlags + bit 5, [hl] + res 5, [hl] + ret z + ld hl, SilphCo7GateCoords + call SilphCo7Text_51bc8 + call SilphCo7Text_51bf4 + CheckEvent EVENT_SILPH_CO_7_UNLOCKED_DOOR1 + jr nz, .asm_51b9e + push af + ld a, $54 + ld [wNewTileBlockID], a + lb bc, 3, 5 + predef ReplaceTileBlock + pop af +.asm_51b9e + CheckEventAfterBranchReuseA EVENT_SILPH_CO_7_UNLOCKED_DOOR2, EVENT_SILPH_CO_7_UNLOCKED_DOOR1 + jr nz, .asm_51bb1 + push af + ld a, $54 + ld [wNewTileBlockID], a + lb bc, 2, 10 + predef ReplaceTileBlock + pop af +.asm_51bb1 + CheckEventAfterBranchReuseA EVENT_SILPH_CO_7_UNLOCKED_DOOR3, EVENT_SILPH_CO_7_UNLOCKED_DOOR2 + ret nz + ld a, $54 + ld [wNewTileBlockID], a + lb bc, 6, 10 + predef_jump ReplaceTileBlock + +SilphCo7GateCoords: + db $03,$05 + db $02,$0A + db $06,$0A + db $FF + +SilphCo7Text_51bc8: + 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_51bd4 + ld a, [hli] + cp $ff + jr z, .asm_51bf0 + push hl + ld hl, $ffe0 + inc [hl] + pop hl + cp b + jr z, .asm_51be5 + inc hl + jr .asm_51bd4 +.asm_51be5 + ld a, [hli] + cp c + jr nz, .asm_51bd4 + ld hl, wCardKeyDoorY + xor a + ld [hli], a + ld [hl], a + ret +.asm_51bf0 + xor a + ld [$ffe0], a + ret + +SilphCo7Text_51bf4: + EventFlagAddress hl, EVENT_SILPH_CO_7_UNLOCKED_DOOR1 + ld a, [$ffe0] + and a + ret z + cp $1 + jr nz, .next1 + SetEventReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR1 + ret +.next1 + cp $2 + jr nz, .next2 + SetEventAfterBranchReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR2, EVENT_SILPH_CO_7_UNLOCKED_DOOR1 + ret +.next2 + SetEventAfterBranchReuseHL EVENT_SILPH_CO_7_UNLOCKED_DOOR3, EVENT_SILPH_CO_7_UNLOCKED_DOOR1 + ret + +SilphCo7Text_51c0c: + xor a + ld [wJoyIgnore], a + +SilphCo7Text_51c10: + ld [wSilphCo7FCurScript], a + ld [wCurMapScript], a + ret + +SilphCo7F_ScriptPointers: + dw SilphCo7Script0 + dw DisplayEnemyTrainerTextAndStartBattle + dw EndTrainerBattle + dw SilphCo7Script3 + dw SilphCo7Script4 + dw SilphCo7Script5 + +SilphCo7Script0: + CheckEvent EVENT_BEAT_SILPH_CO_RIVAL + jp nz, CheckFightingMapTrainers + ld hl, CoordsData_51c78 + call ArePlayerCoordsInArray + jp nc, CheckFightingMapTrainers + xor a + ld [hJoyHeld], a + ld a, $f0 + ld [wJoyIgnore], a + ld a, PLAYER_DIR_DOWN + ld [wPlayerMovingDirection], a + ld a, $ff + ld [wNewSoundID], a + call PlaySound + ld c, BANK(Music_MeetRival) + ld a, MUSIC_MEET_RIVAL + call PlayMusic + ld a, $9 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $9 + ld [H_SPRITEINDEX], a + call SetSpriteMovementBytesToFF + ld de, MovementData_51c7d + ld a, [wCoordIndex] + ld [wcf0d], a + cp $1 + jr z, .asm_51c6c + inc de +.asm_51c6c + ld a, $9 + ld [H_SPRITEINDEX], a + call MoveSprite + ld a, $3 + jp SilphCo7Text_51c10 + +CoordsData_51c78: + db $02,$03 + db $03,$03 + db $FF + +MovementData_51c7d: + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db $FF + +SilphCo7Script3: + ld a, [wd730] + bit 0, a + ret nz + xor a + ld [wJoyIgnore], a + ld a, $d + ld [hSpriteIndexOrTextID], a + call DisplayTextID + call Delay3 + ld hl, wd72d + set 6, [hl] + set 7, [hl] + ld hl, SilphCo7Text14 + ld de, SilphCo7Text_51ecd + call SaveEndBattleTextPointers + ld a, OPP_SONY2 + ld [wCurOpponent], a + ld a, [wRivalStarter] + cp STARTER2 + jr nz, .asm_51cb6 + ld a, $7 + jr .asm_51cc0 +.asm_51cb6 + cp STARTER3 + jr nz, .asm_51cbe + ld a, $8 + jr .asm_51cc0 +.asm_51cbe + ld a, $9 +.asm_51cc0 + ld [wTrainerNo], a + ld a, $4 + jp SilphCo7Text_51c10 + +SilphCo7Script4: + ld a, [wIsInBattle] + cp $ff + jp z, SilphCo7Text_51c0c + ld a, $f0 + ld [wJoyIgnore], a + SetEvent EVENT_BEAT_SILPH_CO_RIVAL + ld a, PLAYER_DIR_DOWN + ld [wPlayerMovingDirection], a + ld a, $9 + ld [H_SPRITEINDEX], a + ld a, SPRITE_FACING_UP + ld [hSpriteFacingDirection], a + call SetSpriteFacingDirectionAndDelay + ld a, $f + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld a, $ff + ld [wNewSoundID], a + call PlaySound + callba Music_RivalAlternateStart + ld de, MovementData_51d1d + ld a, [wcf0d] + cp $1 + jr nz, .asm_51d0e + ld de, MovementData_51d1a +.asm_51d0e + ld a, $9 + ld [H_SPRITEINDEX], a + call MoveSprite + ld a, $5 + jp SilphCo7Text_51c10 + +MovementData_51d1a: + db NPC_MOVEMENT_RIGHT + db NPC_MOVEMENT_RIGHT + db $FF + +MovementData_51d1d: + db NPC_MOVEMENT_LEFT + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_UP + db NPC_MOVEMENT_RIGHT + db NPC_MOVEMENT_RIGHT + db NPC_MOVEMENT_RIGHT + db NPC_MOVEMENT_DOWN + db $FF + +SilphCo7Script5: + ld a, [wd730] + bit 0, a + ret nz + ld a, HS_SILPH_CO_7F_RIVAL + ld [wMissableObjectIndex], a + predef HideObject + call PlayDefaultMusic + xor a + ld [wJoyIgnore], a + jp SilphCo7Text_51c10 + +SilphCo7F_TextPointers: + dw SilphCo7Text1 + dw SilphCo7Text2 + dw SilphCo7Text3 + dw SilphCo7Text4 + dw SilphCo7Text5 + dw SilphCo7Text6 + dw SilphCo7Text7 + dw SilphCo7Text8 + dw SilphCo7Text9 + dw PickUpItemText + dw PickUpItemText + dw PickUpItemText + dw SilphCo7Text13 + dw SilphCo7Text14 + dw SilphCo7Text15 + +SilphCo7TrainerHeader0: + dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_0 + db ($2 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_0 + dw SilphCo7BattleText1 ; TextBeforeBattle + dw SilphCo7AfterBattleText1 ; TextAfterBattle + dw SilphCo7EndBattleText1 ; TextEndBattle + dw SilphCo7EndBattleText1 ; TextEndBattle + +SilphCo7TrainerHeader1: + dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_1 + db ($3 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_1 + dw SilphCo7BattleText2 ; TextBeforeBattle + dw SilphCo7AfterBattleText2 ; TextAfterBattle + dw SilphCo7EndBattleText2 ; TextEndBattle + dw SilphCo7EndBattleText2 ; TextEndBattle + +SilphCo7TrainerHeader2: + dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_2 + db ($3 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_2 + dw SilphCo7BattleText3 ; TextBeforeBattle + dw SilphCo7AfterBattleText3 ; TextAfterBattle + dw SilphCo7EndBattleText3 ; TextEndBattle + dw SilphCo7EndBattleText3 ; TextEndBattle + +SilphCo7TrainerHeader3: + dbEventFlagBit EVENT_BEAT_SILPH_CO_7F_TRAINER_3, 1 + db ($4 << 4) ; trainer's view range + dwEventFlagAddress EVENT_BEAT_SILPH_CO_7F_TRAINER_3, 1 + dw SilphCo7BattleText4 ; TextBeforeBattle + dw SilphCo7AfterBattleText4 ; TextAfterBattle + dw SilphCo7EndBattleText4 ; TextEndBattle + dw SilphCo7EndBattleText4 ; TextEndBattle + + db $ff + +SilphCo7Text1: +; lapras guy + TX_ASM + ld a, [wd72e] + bit 0, a ; got lapras? + jr z, .givelapras + CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI + jr nz, .savedsilph + ld hl, .LaprasGuyText + call PrintText + jr .done +.givelapras + ld hl, .MeetLaprasGuyText + call PrintText + lb bc, LAPRAS, 15 + call GivePokemon + jr nc, .done + ld a, [wSimulatedJoypadStatesEnd] + and a + call z, WaitForTextScrollButtonPress + call EnableAutoTextBoxDrawing + ld hl, .HeresYourLaprasText + call PrintText + ld hl, wd72e + set 0, [hl] + jr .done +.savedsilph + ld hl, .LaprasGuySavedText + call PrintText +.done + jp TextScriptEnd + +.MeetLaprasGuyText + TX_FAR _MeetLaprasGuyText + db "@" + +.HeresYourLaprasText + TX_FAR _HeresYourLaprasText + db "@" + +.LaprasGuyText + TX_FAR _LaprasGuyText + db "@" + +.LaprasGuySavedText + TX_FAR _LaprasGuySavedText + db "@" + +SilphCo7Text2: + TX_ASM + CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI + jr nz, .savedsilph + ld hl, .rockettext + call PrintText + jr .done +.savedsilph + ld hl, .savedtext + call PrintText +.done + jp TextScriptEnd + +.rockettext + TX_FAR _SilphCo7Text_51e00 + db "@" + +.savedtext + TX_FAR _CanceledMasterBallText + db "@" + +SilphCo7Text3: + TX_ASM + CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI + jr nz, .savedsilph + ld hl, .rockettext + call PrintText + jr .done +.savedsilph + ld hl, .savedtext + call PrintText +.done + jp TextScriptEnd + +.rockettext + TX_FAR _SilphCo7Text_51e23 + db "@" + +.savedtext + TX_FAR _SilphCo7Text_51e28 + db "@" + +SilphCo7Text4: + TX_ASM + CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI + jr nz, .savedsilph + ld hl, .rockettext + call PrintText + jr .done +.savedsilph + ld hl, .savedtext + call PrintText +.done + jp TextScriptEnd + +.rockettext + TX_FAR _SilphCo7Text_51e46 + db "@" + +.savedtext + TX_FAR _SilphCo7Text_51e4b + db "@" + +SilphCo7Text5: + TX_ASM + ld hl, SilphCo7TrainerHeader0 + call TalkToTrainer + jp TextScriptEnd + +SilphCo7BattleText1: + TX_FAR _SilphCo7BattleText1 + db "@" + +SilphCo7EndBattleText1: + TX_FAR _SilphCo7EndBattleText1 + db "@" + +SilphCo7AfterBattleText1: + TX_FAR _SilphCo7AfterBattleText1 + db "@" + +SilphCo7Text6: + TX_ASM + ld hl, SilphCo7TrainerHeader1 + call TalkToTrainer + jp TextScriptEnd + +SilphCo7BattleText2: + TX_FAR _SilphCo7BattleText2 + db "@" + +SilphCo7EndBattleText2: + TX_FAR _SilphCo7EndBattleText2 + db "@" + +SilphCo7AfterBattleText2: + TX_FAR _SilphCo7AfterBattleText2 + db "@" + +SilphCo7Text7: + TX_ASM + ld hl, SilphCo7TrainerHeader2 + call TalkToTrainer + jp TextScriptEnd + +SilphCo7BattleText3: + TX_FAR _SilphCo7BattleText3 + db "@" + +SilphCo7EndBattleText3: + TX_FAR _SilphCo7EndBattleText3 + db "@" + +SilphCo7AfterBattleText3: + TX_FAR _SilphCo7AfterBattleText3 + db "@" + +SilphCo7Text8: + TX_ASM + ld hl, SilphCo7TrainerHeader3 + call TalkToTrainer + jp TextScriptEnd + +SilphCo7BattleText4: + TX_FAR _SilphCo7BattleText4 + db "@" + +SilphCo7EndBattleText4: + TX_FAR _SilphCo7EndBattleText4 + db "@" + +SilphCo7AfterBattleText4: + TX_FAR _SilphCo7AfterBattleText4 + db "@" + +SilphCo7Text9: + TX_ASM + ld hl, SilphCo7Text_51ebe + call PrintText + jp TextScriptEnd + +SilphCo7Text_51ebe: + TX_FAR _SilphCo7Text_51ebe + db "@" + +SilphCo7Text13: + TX_FAR _SilphCo7Text_51ec3 + db "@" + +SilphCo7Text14: + TX_FAR _SilphCo7Text_51ec8 + db "@" + +SilphCo7Text_51ecd: + TX_FAR _SilphCo7Text_51ecd + db "@" + +SilphCo7Text15: + TX_FAR _SilphCo7Text_51ed2 + db "@" |