summaryrefslogtreecommitdiff
path: root/scripts/gary.asm
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/gary.asm')
-rwxr-xr-xscripts/gary.asm297
1 files changed, 297 insertions, 0 deletions
diff --git a/scripts/gary.asm b/scripts/gary.asm
new file mode 100755
index 00000000..aeb04f78
--- /dev/null
+++ b/scripts/gary.asm
@@ -0,0 +1,297 @@
+GaryScript: ; 75f1d (1d:5f1d)
+ call EnableAutoTextBoxDrawing
+ ld hl, GaryScriptPointers
+ ld a, [W_GARYCURSCRIPT]
+ jp CallFunctionInTable
+
+GaryScript_75f29: ; 75f29 (1d:5f29)
+ xor a
+ ld [wJoypadForbiddenButtonsMask], a
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+GaryScriptPointers: ; 75f31 (1d:5f31)
+ dw GaryScript0
+ dw GaryScript1
+ dw GaryScript2
+ dw GaryScript3
+ dw GaryScript4
+ dw GaryScript5
+ dw GaryScript6
+ dw GaryScript7
+ dw GaryScript8
+ dw GaryScript9
+ dw GaryScript10
+
+GaryScript0: ; 75f47 (1d:5f47)
+ ret
+
+GaryScript1: ; 75f48 (1d:5f48)
+ ld a, $ff
+ ld [wJoypadForbiddenButtonsMask], a
+ ld hl, $ccd3
+ ld de, RLEMovement75f63
+ call DecodeRLEList
+ dec a
+ ld [$cd38], a
+ call Func_3486
+ ld a, $2
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+RLEMovement75f63: ; 75f63 (1d:5f63)
+ db $40,1
+ db $10,1
+ db $40,3
+ db $ff
+
+GaryScript2: ; 75f6a (1d:5f6a)
+ ld a, [$cd38]
+ and a
+ ret nz
+ call Delay3
+ xor a
+ ld [wJoypadForbiddenButtonsMask], a
+ ld hl, $d355
+ res 7, [hl]
+ ld a, $1
+ ld [$ff8c], a
+ call DisplayTextID
+ call Delay3
+ ld hl, $d72d
+ set 6, [hl]
+ set 7, [hl]
+ ld hl, GaryText_760f9
+ ld de, GaryText_760fe
+ call PreBattleSaveRegisters
+ ld a, SONY3 + $c8
+ ld [W_CUROPPONENT], a
+
+ ; select which team to use during the encounter
+ ld a, [W_RIVALSTARTER]
+ cp SQUIRTLE
+ jr nz, .NotSquirtle ; 0x75f9f $4
+ ld a, $1
+ jr .done
+.NotSquirtle
+ cp BULBASAUR
+ jr nz, .Charmander ; 0x75fa7 $4
+ ld a, $2
+ jr .done
+.Charmander
+ ld a, $3
+.done
+ ld [W_TRAINERNO], a
+
+ xor a
+ ld [H_CURRENTPRESSEDBUTTONS], a
+ ld a, $3
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+GaryScript3: ; 75fbb (1d:5fbb)
+ ld a, [W_ISINBATTLE]
+ cp $ff
+ jp z, GaryScript_75f29
+ call UpdateSprites ; move sprites
+ ld hl, $d867
+ set 1, [hl]
+ ld a, $f0
+ ld [wJoypadForbiddenButtonsMask], a
+ ld a, $1
+ ld [$ff8c], a
+ call GaryScript_760c8
+ ld a, $1
+ ld [$ff8c], a
+ call SetSpriteMovementBytesToFF
+ ld a, $4
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+GaryScript4: ; 75fe4 (1d:5fe4)
+ ld b, BANK(Music_Cities1AlternateTempo)
+ ld hl, Music_Cities1AlternateTempo
+ call Bankswitch
+ ld a, $2
+ ld [$ff8c], a
+ call GaryScript_760c8
+ ld a, $2
+ ld [$ff8c], a
+ call SetSpriteMovementBytesToFF
+ ld de, MovementData_76014
+ ld a, $2
+ ld [$ff8c], a
+ call MoveSprite
+ ld a, $d6
+ ld [$cc4d], a
+ ld a, $15
+ call Predef
+ ld a, $5
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+MovementData_76014: ; 76014 (1d:6014)
+ db $40,$40,$40,$40,$40,$FF
+
+GaryScript5: ; 7601a (1d:601a)
+ ld a, [$d730]
+ bit 0, a
+ ret nz
+ ld a, $2
+ ld [$d528], a
+ ld a, $1
+ ld [$ff8c], a
+ ld a, $8
+ ld [$ff8d], a
+ call Func_34a6
+ ld a, $2
+ ld [$ff8c], a
+ xor a
+ ld [$ff8d], a
+ call Func_34a6 ; face object
+ ld a, $3
+ ld [$ff8c], a
+ call GaryScript_760c8
+ ld a, $6
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+GaryScript6: ; 76047 (1d:6047)
+ ld a, $2
+ ld [$ff8c], a
+ ld a, $c
+ ld [$ff8d], a
+ call Func_34a6 ; face object
+ ld a, $4
+ ld [$ff8c], a
+ call GaryScript_760c8
+ ld a, $7
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+GaryScript7: ; 7605f (1d:605f)
+ ld a, $2
+ ld [$ff8c], a
+ xor a
+ ld [$ff8d], a
+ call Func_34a6 ; face object
+ ld a, $5
+ ld [$ff8c], a
+ call GaryScript_760c8
+ ld de, MovementData_76080
+ ld a, $2
+ ld [$ff8c], a
+ call MoveSprite
+ ld a, $8
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+MovementData_76080: ; 76080 (1d:6080)
+ db $40,$40,$FF
+
+GaryScript8: ; 76083 (1d:6083)
+ ld a, [$d730]
+ bit 0, a
+ ret nz
+ ld a, $d6
+ ld [$cc4d], a
+ ld a, $11
+ call Predef
+ ld a, $9
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+GaryScript9: ; 76099 (1d:6099)
+ ld a, $ff
+ ld [wJoypadForbiddenButtonsMask], a
+ ld hl, $ccd3
+ ld de, RLEMovement760b4
+ call DecodeRLEList
+ dec a
+ ld [$cd38], a
+ call Func_3486
+ ld a, $a
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+RLEMovement760b4 ; 760b4 (1d:60b4)
+ db $40,4
+ db $20,1
+ db $ff
+
+GaryScript10: ; 760b9 (1d:60b9)
+ ld a, [$cd38]
+ and a
+ ret nz
+ xor a
+ ld [wJoypadForbiddenButtonsMask], a
+ ld a, $0
+ ld [W_GARYCURSCRIPT], a
+ ret
+
+GaryScript_760c8 ; 760c8 (1d:60c8)
+ ld a, $f0
+ ld [wJoypadForbiddenButtonsMask], a
+ call DisplayTextID
+ ld a, $ff
+ ld [wJoypadForbiddenButtonsMask], a
+ ret
+
+GaryTextPointers: ; 760d6 (1d:60d6)
+ dw GaryText1
+ dw GaryText2
+ dw GaryText3
+ dw GaryText4
+ dw GaryText5
+
+GaryText1: ; 760e0 (1d:60e0)
+ db $08 ; asm
+ ld a, [$d867]
+ bit 1, a
+ ld hl, GaryText_760f4
+ jr z, .asm_17e9f ; 0x760e9
+ ld hl, GaryText_76103
+.asm_17e9f ; 0x760ee
+ call PrintText
+ jp TextScriptEnd
+
+GaryText_760f4: ; 760f4 (1d:60f4)
+ TX_FAR _GaryText_760f4
+ db "@"
+
+GaryText_760f9: ; 760f9 (1d:60f9)
+ TX_FAR _GaryText_760f9
+ db "@"
+
+GaryText_760fe: ; 760fe (1d:60fe)
+ TX_FAR _GaryText_760fe
+ db "@"
+
+GaryText_76103: ; 76103 (1d:6103)
+ TX_FAR _GaryText_76103
+ db "@"
+
+GaryText2: ; 76108 (1d:6108)
+ TX_FAR _GaryText2
+ db "@"
+
+GaryText3: ; 7610d (1d:610d)
+ db $8
+ ld a, [$d717]
+ ld [$d11e], a
+ call GetMonName
+ ld hl, GaryText_76120
+ call PrintText
+ jp TextScriptEnd
+
+GaryText_76120: ; 76120 (1d:6120)
+ TX_FAR _GaryText_76120
+ db "@"
+
+GaryText4: ; 76125 (1d:6125)
+ TX_FAR _GaryText_76125
+ db "@"
+
+GaryText5: ; 7612a (1d:612a)
+ TX_FAR _GaryText_7612a
+ db "@"