summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/facings.asm265
-rw-r--r--engine/gfx/load_push_oam.asm24
-rwxr-xr-xengine/math/math.asm (renamed from engine/math.asm)0
-rw-r--r--[-rwxr-xr-x]engine/menus/intro_menu.asm (renamed from engine/main_menu.asm)451
-rw-r--r--engine/overworld/init_map.asm91
-rwxr-xr-xengine/overworld/map_objects.asm7
-rw-r--r--engine/pokemon/correct_nick_errors.asm53
-rw-r--r--engine/pokemon/learn.asm (renamed from engine/learn.asm)0
-rwxr-xr-xengine/title.asm450
9 files changed, 623 insertions, 718 deletions
diff --git a/engine/facings.asm b/engine/facings.asm
deleted file mode 100644
index a5669c2b..00000000
--- a/engine/facings.asm
+++ /dev/null
@@ -1,265 +0,0 @@
-Facings: ; 404a
- dw Facing00
- dw Facing01
- dw Facing02
- dw Facing03
- dw Facing04
- dw Facing05
- dw Facing06
- dw Facing07
- dw Facing08
- dw Facing09
- dw Facing10
- dw Facing11
- dw Facing12
- dw Facing13
- dw Facing14
- dw Facing15
- dw Facing16
- dw Facing17
- dw Facing18
- dw Facing19
- dw Facing20
- dw Facing21
- dw Facing22
- dw Facing23
- dw Facing24
- dw Facing25
- dw Facing26
- dw Facing27
- dw Facing28
- dw Facing29
- dw Facing30
- dw Facing31
-FacingsEnd: dw 0
-
-NUM_FACINGS EQU (FacingsEnd - Facings) / 2
-
-
-; Tables used as a reference to transform OAM data.
-
-; Format:
-; db y, x, attributes, tile index
-
-; Attributes:
-BEHIND_BG EQU 1 << OAM_PRIORITY
-
-Facing00:
-Facing02:
-Facing24:
-Facing26: ; standing down
- db 4 ; #
- db 0, 0, 0, $00
- db 0, 8, 0, $01
- db 8, 0, 2, $02
- db 8, 8, 2, $03
-; 409d
-
-Facing01: ; walking down 1
- db 4 ; #
- db 0, 0, 0, $80
- db 0, 8, 0, $81
- db 8, 0, 2, $82
- db 8, 8, 2, $83
-; 40ae
-
-Facing03: ; walking down 2
- db 4 ; #
- db 0, 8, X_FLIP, $80
- db 0, 0, X_FLIP, $81
- db 8, 8, 2 | X_FLIP, $82
- db 8, 0, 2 | X_FLIP, $83
-; 40bf
-
-Facing04:
-Facing06: ; standing up
- db 4 ; #
- db 0, 0, 0, $04
- db 0, 8, 0, $05
- db 8, 0, 2, $06
- db 8, 8, 2, $07
-; 40d0
-
-Facing05: ; walking up 1
- db 4 ; #
- db 0, 0, 0, $84
- db 0, 8, 0, $85
- db 8, 0, 2, $86
- db 8, 8, 2, $87
-; 40e1
-
-Facing07: ; walking up 2
- db 4 ; #
- db 0, 8, X_FLIP, $84
- db 0, 0, X_FLIP, $85
- db 8, 8, 2 | X_FLIP, $86
- db 8, 0, 2 | X_FLIP, $87
-; 40f2
-
-Facing08:
-Facing10: ; standing left
- db 4 ; #
- db 0, 0, 0, $08
- db 0, 8, 0, $09
- db 8, 0, 2, $0a
- db 8, 8, 2, $0b
-; 4103
-
-Facing12:
-Facing14: ; standing right
- db 4 ; #
- db 0, 8, X_FLIP, $08
- db 0, 0, X_FLIP, $09
- db 8, 8, 2 | X_FLIP, $0a
- db 8, 0, 2 | X_FLIP, $0b
-; 4114
-
-Facing09:
-Facing11: ; walking left
- db 4 ; #
- db 0, 0, 0, $88
- db 0, 8, 0, $89
- db 8, 0, 2, $8a
- db 8, 8, 2, $8b
-; 4125
-
-Facing13:
-Facing15: ; walking right
- db 4 ; #
- db 0, 8, X_FLIP, $88
- db 0, 0, X_FLIP, $89
- db 8, 8, 2 | X_FLIP, $8a
- db 8, 0, 2 | X_FLIP, $8b
-; 4136
-
-Facing16: ; fishing down
- db 5 ; #
- db 0, 0, 0, $00
- db 0, 8, 0, $01
- db 8, 0, 2, $02
- db 8, 8, 2, $03
- db 16, 0, 4, $fc
-; 414b
-
-Facing17: ; fishing up
- db 5 ; #
- db 0, 0, 0, $04
- db 0, 8, 0, $05
- db 8, 0, 2, $06
- db 8, 8, 2, $07
- db -8, 0, 4, $fc
-; 4160
-
-Facing18: ; fishing left
- db 5 ; #
- db 0, 0, 0, $08
- db 0, 8, 0, $09
- db 8, 0, 2, $0a
- db 8, 8, 2, $0b
- db 5, -8, 4 | X_FLIP, $fd
-; 4175
-
-Facing19: ; fishing right
- db 5 ; #
- db 0, 8, X_FLIP, $08
- db 0, 0, X_FLIP, $09
- db 8, 8, 2 | X_FLIP, $0a
- db 8, 0, 2 | X_FLIP, $0b
- db 5, 16, 4, $fd
-; 418a
-
-Facing20: ; emote
- db 4 ; #
- db 0, 0, 4, $f8
- db 0, 8, 4, $f9
- db 8, 0, 4, $fa
- db 8, 8, 4, $fb
-; 419b
-
-Facing21: ; shadow
- db 2 ; #
- db 0, 0, 4, $fc
- db 0, 8, 4 | X_FLIP, $fc
-; 41a4
-
-Facing23: ; big snorlax or lapras doll
- db 16 ; #
- db 0, 0, 0, $00
- db 0, 8, 0, $01
- db 8, 0, 0, $02
- db 8, 8, 0, $03
- db 16, 0, 0, $04
- db 16, 8, 0, $05
- db 24, 0, 0, $06
- db 24, 8, 0, $07
- db 0, 24, X_FLIP, $00
- db 0, 16, X_FLIP, $01
- db 8, 24, X_FLIP, $02
- db 8, 16, X_FLIP, $03
- db 16, 24, X_FLIP, $04
- db 16, 16, X_FLIP, $05
- db 24, 24, X_FLIP, $06
- db 24, 16, X_FLIP, $07
-; 41e5
-
-Facing25: ; 41e4
- db 4 ; #
- db 0, 0, 0, $04
- db 0, 8, 0, $05
- db 8, 0, 0, $06
- db 8, 8, 0, $07
-; 41f6
-
-Facing27: ; 41f5
- db 4 ; #
- db 0, 8, X_FLIP, $04
- db 0, 0, X_FLIP, $05
- db 8, 8, X_FLIP, $06
- db 8, 0, X_FLIP, $07
-; 4207
-
-Facing22: ; big doll other than snorlax or lapras
- db 14 ; #
- db 0, 0, 0, $00
- db 0, 8, 0, $01
- db 8, 0, 0, $04
- db 8, 8, 0, $05
- db 16, 8, 0, $07
- db 24, 8, 0, $0a
- db 0, 24, 0, $03
- db 0, 16, 0, $02
- db 8, 24, X_FLIP, $02
- db 8, 16, 0, $06
- db 16, 24, 0, $09
- db 16, 16, 0, $08
- db 24, 24, X_FLIP, $04
- db 24, 16, 0, $0b
-; 4240
-
-Facing28: ; boulder dust 1
- db 4 ; #
- db 0, 0, 4, $fe
- db 0, 8, 4, $fe
- db 8, 0, 4, $fe
- db 8, 8, 4, $fe
-; 4251
-
-Facing29: ; boulder dust 2
- db 4 ; #
- db 0, 0, 4, $ff
- db 0, 8, 4, $ff
- db 8, 0, 4, $ff
- db 8, 8, 4, $ff
-; 4262
-
-Facing30: ; 4261
- db 2 ; #
- db 8, 0, 0, $00
- db 8, 8, 0 | X_FLIP, $00
-; 426b
-
-Facing31: ; 426a
- db 2 ; #
- db 9, -1, 0, $00
- db 9, 9, 0 | X_FLIP, $00
-; 4274
diff --git a/engine/gfx/load_push_oam.asm b/engine/gfx/load_push_oam.asm
new file mode 100644
index 00000000..641439ec
--- /dev/null
+++ b/engine/gfx/load_push_oam.asm
@@ -0,0 +1,24 @@
+DummyPredef1:
+ ret
+
+WriteOAMDMACodeToHRAM::
+ ld c, LOW(hTransferVirtualOAM)
+ ld b, .PushOAMEnd - .PushOAM
+ ld hl, .PushOAM
+.loop
+ ld a, [hli]
+ ldh [c], a
+ inc c
+ dec b
+ jr nz, .loop
+ ret
+
+.PushOAM:
+ ld a, HIGH(wVirtualOAM)
+ ldh [rDMA], a
+ ld a, NUM_SPRITE_OAM_STRUCTS
+.pushoam_loop
+ dec a
+ jr nz, .pushoam_loop
+ ret
+.PushOAMEnd
diff --git a/engine/math.asm b/engine/math/math.asm
index cdac2d37..cdac2d37 100755
--- a/engine/math.asm
+++ b/engine/math/math.asm
diff --git a/engine/main_menu.asm b/engine/menus/intro_menu.asm
index 6f460a5c..2ad9a396 100755..100644
--- a/engine/main_menu.asm
+++ b/engine/menus/intro_menu.asm
@@ -1091,3 +1091,454 @@ Intro_PlacePlayerSprite: ; 6210 (1:6210)
db 9 * 8 + 4, 10 * 8, 1
db 10 * 8 + 4, 9 * 8, 2
db 10 * 8 + 4, 10 * 8, 3
+
+IntroSequence: ; 6241 (1:6241)
+ callfar Copyright_GFPresents
+ jr c, StartTitleScreen
+ callfar GoldSilverIntro
+StartTitleScreen:
+ call InitTitleScreen
+ call DelayFrame
+.asm_6255
+ call TitleScreenFrame
+ jr nc, .asm_6255
+ call ClearSprites
+ call ClearBGPalettes
+ ld hl, rLCDC
+ res 2, [hl]
+ call ClearTilemap
+ xor a
+ ldh [hLCDCPointer], a
+ ld b, $8
+ call GetSGBLayout
+ call UpdateTimePals
+ ld a, [wce64]
+ cp $5
+ jr c, .asm_627b
+ xor a
+.asm_627b
+ ld e, a
+ ld d, $0
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+.Jumptable
+ dw MainMenu_
+ dw DeleteSaveData
+ dw IntroSequence
+ dw IntroSequence
+ dw ResetClock
+
+InitTitleScreen: ; 6291 (1:6291)
+ call ClearBGPalettes
+ xor a
+ ld [wTimeOfDayPal], a
+ ld de, MUSIC_NONE
+ call PlayMusic
+ call ClearTilemap
+ call DisableLCD
+ call ClearSprites
+ xor a
+ ldh [hBGMapMode], a
+ ldh [hMapAnims], a
+ ldh [hSCY], a
+ ldh [hSCX], a
+ ld hl, $8000
+ ld bc, $2000
+ xor a
+ call ByteFill
+ farcall ClearAnimatedObjectBuffer
+
+ ld hl, TitleScreenGFX1
+ ld de, $9000
+ ld a, BANK(TitleScreenGFX1)
+ call FarDecompress
+
+ ld hl, TitleScreenGFX2
+ ld de, $8800
+ ld a, BANK(TitleScreenGFX2)
+ call FarDecompress
+
+ ld hl, TitleScreenGFX4
+ ld de, $8000
+ ld a, BANK(TitleScreenGFX4)
+ call FarDecompress
+
+ ld hl, TitleScreenGFX3
+ ld de, $8f80
+ ld bc, $80
+ ld a, BANK(TitleScreenGFX3)
+ call FarCopyBytes
+
+ call Function636e
+ call Function63b6
+ ld hl, wAnimatedObjectDynamicVTileOffsets
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld hl, rLCDC
+ set 2, [hl]
+ call EnableLCD
+ xor a
+ ld hl, wce63
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld de, $6058
+ ld a, $2c ; HO-OH
+ call InitSpriteAnimStruct
+ ld hl, wAnimatedObjectStruct1
+ ld de, wAnimatedObjectStruct10
+ ld bc, $a
+ call CopyBytes
+ ld hl, wAnimatedObjectStruct1
+ ld [hl], $0
+ ld hl, wc700
+ ld bc, $90
+ xor a
+ call ByteFill
+ ld a, $43
+ ldh [hLCDCPointer], a
+ ld b, $c
+ call GetSGBLayout
+ call Function6341
+ ld de, MUSIC_TITLE
+ call PlayMusic
+ ret
+
+Function6341: ; 6341 (1:6341)
+ ldh a, [hCGB]
+ and a
+ jr nz, .asm_6365
+ ldh a, [hSGB]
+ and a
+ jr nz, .asm_6358
+ ld a, $d8
+ ldh [rBGP], a
+IF DEF(GOLD)
+ ld a, $ff
+ ldh [rOBP0], a
+ ld a, $f8
+ENDC
+IF DEF(SILVER)
+ ld a, $f0
+ ldh [rOBP0], a
+ ld a, $f0
+ENDC
+ ldh [rOBP1], a
+ ret
+
+.asm_6358
+ ld a, $e4
+ ldh [rBGP], a
+IF DEF(GOLD)
+ ld a, $ff
+ ldh [rOBP0], a
+ ld a, $e4
+ENDC
+IF DEF(SILVER)
+ ld a, $f0
+ ldh [rOBP0], a
+ ld a, $e0
+ENDC
+ ldh [rOBP1], a
+ ret
+
+.asm_6365
+ ld a, $e4
+ call DmgToCgbBGPals
+IF DEF(SILVER)
+ ld a, $e0
+ENDC
+ call DmgToCgbObjPal0
+ ret
+
+Function636e: ; 636e (1:636e)
+ ldh a, [hCGB]
+ and a
+ ret z
+ ld a, $1
+ ldh [rVBK], a
+ ld hl, $9800
+ ld bc, $240
+ xor a
+ call ByteFill
+ ld hl, $9800
+ ld bc, $714
+ ld a, $1
+ call Function63a6
+ ld hl, $98c5
+ ld bc, $10a
+ ld a, $3
+ call Function63a6
+ ld hl, $9980
+ ld bc, $a0
+ ld a, $4
+ call ByteFill
+ ld a, $0
+ ldh [rVBK], a
+ ret
+
+Function63a6: ; 63a6 (1:63a6)
+ push bc
+ push hl
+.asm_63a8
+ ld [hli], a
+ dec c
+ jr nz, .asm_63a8
+ pop hl
+ ld bc, $20
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, Function63a6
+ ret
+
+Function63b6: ; 63b6 (1:63b6)
+ ld hl, GSIntroTilemap ; $4616
+ ld de, $9800
+.asm_63bc
+ ld a, BANK(GSIntroTilemap) ; $26
+ call GetFarByte
+ cp $ff
+ jr z, .asm_63ca
+ inc hl
+ ld [de], a
+ inc de
+ jr .asm_63bc
+
+.asm_63ca
+ ldh a, [hCGB]
+ and a
+ ret nz
+ ld hl, $9960
+ ld bc, $20
+ ld a, $50
+ call ByteFill
+ ret
+
+TitleScreenFrame: ; 63da (1:63da)
+ call Function63fe
+ ld a, [wce63]
+ bit 7, a
+ jr nz, .asm_63fc
+ call Function640f
+ ld a, $1
+ ldh [hOAMUpdate], a
+ farcall AnimatedObjects_PlayFrame
+ xor a
+ ldh [hOAMUpdate], a
+ call Function64b1
+ call DelayFrame
+ and a
+ ret
+
+.asm_63fc
+ scf
+ ret
+
+Function63fe: ; 63fe (1:63fe)
+IF DEF(GOLD)
+ ldh a, [hVBlankCounter]
+ and $7
+ ret nz
+ENDC
+ ld hl, wc75f
+ ld a, [hl]
+ dec a
+ ld bc, $28
+ call ByteFill
+ ret
+
+Function640f: ; 640f (1:640f)
+ ld e, a
+ ld d, $0
+ ld hl, .Jumptable ; $641b
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+.Jumptable
+ dw Function6426
+ dw Function6434
+ dw Function648b
+
+Function6421:
+ ld hl, wce63
+ inc [hl]
+ ret
+
+Function6426:
+ ld hl, wce63
+ inc [hl]
+ ld hl, wce65
+IF DEF(GOLD)
+ ld de, $13c0
+ENDC
+IF DEF(SILVER)
+ ld de, $1140
+ENDC
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+Function6434:
+ ld hl, wce65
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, e
+ or d
+ jr z, .asm_646b
+ dec de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ call GetJoypad
+ ld hl, hJoyDown
+ ld a, [hl]
+ and D_UP + B_BUTTON + SELECT
+ cp D_UP + B_BUTTON + SELECT
+ jr z, .asm_6460
+ ld a, [hl]
+ and D_DOWN + B_BUTTON + SELECT
+ cp D_DOWN + B_BUTTON + SELECT
+ jr z, .asm_6480
+ ld a, [hl]
+ and START | A_BUTTON
+ jr nz, .asm_645c
+ ret
+
+.asm_645c
+ ld a, $0
+ jr .asm_6462
+
+.asm_6460
+ ld a, $1
+.asm_6462
+ ld [wce64], a
+ ld hl, wce63
+ set 7, [hl]
+ ret
+
+.asm_646b
+ ld hl, wce63
+ inc [hl]
+ xor a
+ ld [wMusicFadeID], a
+ ld [wMusicFadeID + 1], a
+ ld hl, wMusicFade
+ ld [hl], $8
+ ld hl, wce65
+ inc [hl]
+ ret
+
+.asm_6480
+ ld a, $4
+ ld [wce64], a
+ ld hl, wce63
+ set 7, [hl]
+ ret
+
+Function648b:
+ ld hl, wce65
+ inc [hl]
+ ld a, [wMusicFade]
+ and a
+ ret nz
+ ld a, $2
+ ld [wce64], a
+ ld hl, wce63
+ set 7, [hl]
+ ret
+
+DeleteSaveData:
+ farcall DeleteSaveData_
+ jp Init
+
+ResetClock:
+ farcall ResetClock_
+ jp Init
+
+Function64b1: ; 64b1 (1:64b1)
+ ld a, [wce65]
+ and $3
+ ret nz
+IF DEF(GOLD)
+ ld bc, wAnimatedObjectStruct10Index
+ ld hl, $a
+ add hl, bc
+ ld l, [hl]
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld de, .Data_64e0
+ add hl, de
+ ld a, [wce65]
+ and $4
+ srl a
+ srl a
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ and a
+ ret z
+ ld e, a
+ ld d, [hl]
+ENDC
+
+IF DEF(SILVER)
+ ld de, $7c58
+ENDC
+ ld a, $f
+ call InitSpriteAnimStruct
+ ret
+
+IF DEF(GOLD)
+.Data_64e0:
+ db $5c, $50, $00, $00
+ db $5c, $68, $5c, $58
+ db $5c, $68, $5c, $78
+ db $5c, $88, $5c, $78
+ db $00, $00, $5c, $78
+ db $00, $00, $5c, $58
+ENDC
+
+Copyright:
+ call ClearTilemap
+ call LoadFontsExtra
+ ld de, CopyrightGFX
+ ld hl, vTiles2 tile $60
+ lb bc, BANK(CopyrightGFX), 30
+ call Request2bpp
+ hlcoord 2, 7
+ ld de, CopyrightString
+ jp PlaceString
+
+CopyrightString:
+ db $60, $61, $62, $63, $7a, $7b, $7c, $7d
+ db $65, $66, $67, $68, $69, $6a
+ next $60, $61, $62, $63, $7a, $7b, $7c, $7d
+ db $6b, $6c, $6d, $6e, $6f, $70, $71, $72
+ next $60, $61, $62, $63, $7a, $7b, $7c, $7d
+ db $73, $74, $75, $76, $77, $78, $79, $71, $72
+ db "@"
+
+GameInit:: ; 6545 (1:6545)
+ call ClearWindowData
+ ld a, $5
+ ld hl, $4f60
+ rst FarCall
+ jp IntroSequence
diff --git a/engine/overworld/init_map.asm b/engine/overworld/init_map.asm
new file mode 100644
index 00000000..07cd07de
--- /dev/null
+++ b/engine/overworld/init_map.asm
@@ -0,0 +1,91 @@
+ReanchorBGMap_NoOAMUpdate:: ; 6551 (1:6551)
+ call DelayFrame
+ ldh a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ldh [hOAMUpdate], a
+ ldh a, [hBGMapMode]
+ push af
+ xor a
+ ldh [hBGMapMode], a
+ call Function656b
+ pop af
+ ldh [hBGMapMode], a
+ pop af
+ ldh [hOAMUpdate], a
+ ret
+
+Function656b: ; 656b (1:656b)
+ xor a
+ ldh [hLCDCPointer], a
+ ldh [hBGMapMode], a
+ ld hl, wd565
+ set 7, [hl]
+ res 2, [hl]
+ ld a, $90
+ ldh [hWY], a
+ call OverworldTextModeSwitch
+ ld a, $9c
+ call .LoadBGMapAddrIntoHRAM
+ call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap
+ xor a
+ ldh [hBGMapMode], a
+ ldh [hWY], a
+ ld a, $98
+ call .LoadBGMapAddrIntoHRAM
+ call .WaitTransfer
+ xor a
+ ld [wd05b], a
+ ld a, $98
+ ld [wd05c], a
+ xor a
+ ldh [hSCX], a
+ ldh [hSCY], a
+ call ApplyBGMapAnchorToObjects
+ ret
+
+.LoadBGMapAddrIntoHRAM: ; 65a5 (1:65a5)
+ ldh [hBGMapAddress + 1], a
+ xor a
+ ldh [hBGMapAddress], a
+ ret
+
+.WaitTransfer: ; 65ab (1:65ab)
+ ldh a, [hBGMapMode]
+ push af
+ xor a
+ ldh [hBGMapMode], a
+ ldh a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ldh [hOAMUpdate], a
+ ld a, $3
+ ldh [hVBlankCounter + 1], a
+.asm_65bc
+ call DelayFrame
+ ldh a, [hVBlankCounter + 1]
+ and a
+ jr nz, .asm_65bc
+ pop af
+ ldh [hOAMUpdate], a
+ pop af
+ ldh [hBGMapMode], a
+ ret
+
+LoadFonts_NoOAMUpdate:: ; 65cb (1:65cb)
+ ldh a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ldh [hOAMUpdate], a
+ call .LoadGFX
+ pop af
+ ldh [hOAMUpdate], a
+ ret
+
+.LoadGFX: ; 65d9 (1:65d9)
+ call LoadFontsExtra
+ ld a, $90
+ ldh [hWY], a
+ call SafeUpdateSprites
+ call Functiond9e
+ ret \ No newline at end of file
diff --git a/engine/overworld/map_objects.asm b/engine/overworld/map_objects.asm
index 774d4cd8..392cb86e 100755
--- a/engine/overworld/map_objects.asm
+++ b/engine/overworld/map_objects.asm
@@ -1,5 +1,6 @@
-INCLUDE "engine/facings.asm"
-SpriteMovementData:: INCLUDE "data/map_objects.asm"
+INCLUDE "data/sprites/facings.asm"
+
+INCLUDE "data/sprites/map_objects.asm"
DeleteMapObject:: ; 4358 (1:4358)
push bc
@@ -1370,7 +1371,7 @@ Function597a: ; 597a (1:597a)
ld l, a
ld h, $0
add hl, hl
- ld bc, PushOAMEnd
+ ld bc, Facings
add hl, bc
ld a, [hli]
ld h, [hl]
diff --git a/engine/pokemon/correct_nick_errors.asm b/engine/pokemon/correct_nick_errors.asm
new file mode 100644
index 00000000..c7b6ff39
--- /dev/null
+++ b/engine/pokemon/correct_nick_errors.asm
@@ -0,0 +1,53 @@
+CorrectNickErrors:: ; 677e (1:677e)
+ push bc
+ push de
+ ld b, MON_NAME_LENGTH
+.checkchar
+ ld a, [de]
+ cp "@"
+ jr z, .done
+ ld hl, .textcommands
+ dec hl
+.loop
+ inc hl
+ ld a, [hl]
+ cp $ff
+ jr z, .next
+ ld a, [de]
+ cp [hl]
+ inc hl
+ jr c, .loop
+ cp [hl]
+ jr nc, .loop
+ ld a, "?"
+ ld [de], a
+ jr .loop
+
+.next
+ inc de
+ dec b
+ jr nz, .checkchar
+ pop de
+ push de
+ ld a, "?"
+ ld [de], a
+ inc de
+ ld a, "@"
+ ld [de], a
+.done
+ pop de
+ pop bc
+ ret
+
+.textcommands
+; table defining which characters are actually text commands
+; format:
+ ; ≥ <
+ db "<START>", $04 + 1
+ db "<PLAY_G>", $18 + 1
+ db $1d, "%" + 1
+ db $35, "<GREEN>" + 1
+ db "<ENEMY>", "<ENEMY>" + 1
+ db $49, "<TM>" + 1
+ db "<ROCKET>", "┘" + 1
+ db -1 ; end \ No newline at end of file
diff --git a/engine/learn.asm b/engine/pokemon/learn.asm
index b28f754b..b28f754b 100644
--- a/engine/learn.asm
+++ b/engine/pokemon/learn.asm
diff --git a/engine/title.asm b/engine/title.asm
deleted file mode 100755
index 94863c56..00000000
--- a/engine/title.asm
+++ /dev/null
@@ -1,450 +0,0 @@
-IntroSequence: ; 6241 (1:6241)
- callfar Copyright_GFPresents
- jr c, StartTitleScreen
- callfar GoldSilverIntro
-StartTitleScreen:
- call InitTitleScreen
- call DelayFrame
-.asm_6255
- call TitleScreenFrame
- jr nc, .asm_6255
- call ClearSprites
- call ClearBGPalettes
- ld hl, rLCDC
- res 2, [hl]
- call ClearTilemap
- xor a
- ldh [hLCDCPointer], a
- ld b, $8
- call GetSGBLayout
- call UpdateTimePals
- ld a, [wce64]
- cp $5
- jr c, .asm_627b
- xor a
-.asm_627b
- ld e, a
- ld d, $0
- ld hl, .Jumptable
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp hl
-
-.Jumptable
- dw MainMenu_
- dw DeleteSaveData
- dw IntroSequence
- dw IntroSequence
- dw ResetClock
-
-InitTitleScreen: ; 6291 (1:6291)
- call ClearBGPalettes
- xor a
- ld [wTimeOfDayPal], a
- ld de, MUSIC_NONE
- call PlayMusic
- call ClearTilemap
- call DisableLCD
- call ClearSprites
- xor a
- ldh [hBGMapMode], a
- ldh [hMapAnims], a
- ldh [hSCY], a
- ldh [hSCX], a
- ld hl, $8000
- ld bc, $2000
- xor a
- call ByteFill
- farcall ClearAnimatedObjectBuffer
-
- ld hl, TitleScreenGFX1
- ld de, $9000
- ld a, BANK(TitleScreenGFX1)
- call FarDecompress
-
- ld hl, TitleScreenGFX2
- ld de, $8800
- ld a, BANK(TitleScreenGFX2)
- call FarDecompress
-
- ld hl, TitleScreenGFX4
- ld de, $8000
- ld a, BANK(TitleScreenGFX4)
- call FarDecompress
-
- ld hl, TitleScreenGFX3
- ld de, $8f80
- ld bc, $80
- ld a, BANK(TitleScreenGFX3)
- call FarCopyBytes
-
- call Function636e
- call Function63b6
- ld hl, wAnimatedObjectDynamicVTileOffsets
- xor a
- ld [hli], a
- ld [hl], a
- ld hl, rLCDC
- set 2, [hl]
- call EnableLCD
- xor a
- ld hl, wce63
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hl], a
- ld de, $6058
- ld a, $2c ; HO-OH
- call InitSpriteAnimStruct
- ld hl, wAnimatedObjectStruct1
- ld de, wAnimatedObjectStruct10
- ld bc, $a
- call CopyBytes
- ld hl, wAnimatedObjectStruct1
- ld [hl], $0
- ld hl, wc700
- ld bc, $90
- xor a
- call ByteFill
- ld a, $43
- ldh [hLCDCPointer], a
- ld b, $c
- call GetSGBLayout
- call Function6341
- ld de, MUSIC_TITLE
- call PlayMusic
- ret
-
-Function6341: ; 6341 (1:6341)
- ldh a, [hCGB]
- and a
- jr nz, .asm_6365
- ldh a, [hSGB]
- and a
- jr nz, .asm_6358
- ld a, $d8
- ldh [rBGP], a
-IF DEF(GOLD)
- ld a, $ff
- ldh [rOBP0], a
- ld a, $f8
-ENDC
-IF DEF(SILVER)
- ld a, $f0
- ldh [rOBP0], a
- ld a, $f0
-ENDC
- ldh [rOBP1], a
- ret
-
-.asm_6358
- ld a, $e4
- ldh [rBGP], a
-IF DEF(GOLD)
- ld a, $ff
- ldh [rOBP0], a
- ld a, $e4
-ENDC
-IF DEF(SILVER)
- ld a, $f0
- ldh [rOBP0], a
- ld a, $e0
-ENDC
- ldh [rOBP1], a
- ret
-
-.asm_6365
- ld a, $e4
- call DmgToCgbBGPals
-IF DEF(SILVER)
- ld a, $e0
-ENDC
- call DmgToCgbObjPal0
- ret
-
-Function636e: ; 636e (1:636e)
- ldh a, [hCGB]
- and a
- ret z
- ld a, $1
- ldh [rVBK], a
- ld hl, $9800
- ld bc, $240
- xor a
- call ByteFill
- ld hl, $9800
- ld bc, $714
- ld a, $1
- call Function63a6
- ld hl, $98c5
- ld bc, $10a
- ld a, $3
- call Function63a6
- ld hl, $9980
- ld bc, $a0
- ld a, $4
- call ByteFill
- ld a, $0
- ldh [rVBK], a
- ret
-
-Function63a6: ; 63a6 (1:63a6)
- push bc
- push hl
-.asm_63a8
- ld [hli], a
- dec c
- jr nz, .asm_63a8
- pop hl
- ld bc, $20
- add hl, bc
- pop bc
- dec b
- jr nz, Function63a6
- ret
-
-Function63b6: ; 63b6 (1:63b6)
- ld hl, GSIntroTilemap ; $4616
- ld de, $9800
-.asm_63bc
- ld a, BANK(GSIntroTilemap) ; $26
- call GetFarByte
- cp $ff
- jr z, .asm_63ca
- inc hl
- ld [de], a
- inc de
- jr .asm_63bc
-
-.asm_63ca
- ldh a, [hCGB]
- and a
- ret nz
- ld hl, $9960
- ld bc, $20
- ld a, $50
- call ByteFill
- ret
-
-TitleScreenFrame: ; 63da (1:63da)
- call Function63fe
- ld a, [wce63]
- bit 7, a
- jr nz, .asm_63fc
- call Function640f
- ld a, $1
- ldh [hOAMUpdate], a
- farcall AnimatedObjects_PlayFrame
- xor a
- ldh [hOAMUpdate], a
- call Function64b1
- call DelayFrame
- and a
- ret
-
-.asm_63fc
- scf
- ret
-
-Function63fe: ; 63fe (1:63fe)
-IF DEF(GOLD)
- ldh a, [hVBlankCounter]
- and $7
- ret nz
-ENDC
- ld hl, wc75f
- ld a, [hl]
- dec a
- ld bc, $28
- call ByteFill
- ret
-
-Function640f: ; 640f (1:640f)
- ld e, a
- ld d, $0
- ld hl, .Jumptable ; $641b
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp hl
-
-.Jumptable
- dw Function6426
- dw Function6434
- dw Function648b
-
-Function6421:
- ld hl, wce63
- inc [hl]
- ret
-
-Function6426:
- ld hl, wce63
- inc [hl]
- ld hl, wce65
-IF DEF(GOLD)
- ld de, $13c0
-ENDC
-IF DEF(SILVER)
- ld de, $1140
-ENDC
- ld [hl], e
- inc hl
- ld [hl], d
- ret
-
-Function6434:
- ld hl, wce65
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld a, e
- or d
- jr z, .asm_646b
- dec de
- ld [hl], d
- dec hl
- ld [hl], e
- call GetJoypad
- ld hl, hJoyDown
- ld a, [hl]
- and D_UP + B_BUTTON + SELECT
- cp D_UP + B_BUTTON + SELECT
- jr z, .asm_6460
- ld a, [hl]
- and D_DOWN + B_BUTTON + SELECT
- cp D_DOWN + B_BUTTON + SELECT
- jr z, .asm_6480
- ld a, [hl]
- and START | A_BUTTON
- jr nz, .asm_645c
- ret
-
-.asm_645c
- ld a, $0
- jr .asm_6462
-
-.asm_6460
- ld a, $1
-.asm_6462
- ld [wce64], a
- ld hl, wce63
- set 7, [hl]
- ret
-
-.asm_646b
- ld hl, wce63
- inc [hl]
- xor a
- ld [wMusicFadeID], a
- ld [wMusicFadeID + 1], a
- ld hl, wMusicFade
- ld [hl], $8
- ld hl, wce65
- inc [hl]
- ret
-
-.asm_6480
- ld a, $4
- ld [wce64], a
- ld hl, wce63
- set 7, [hl]
- ret
-
-Function648b:
- ld hl, wce65
- inc [hl]
- ld a, [wMusicFade]
- and a
- ret nz
- ld a, $2
- ld [wce64], a
- ld hl, wce63
- set 7, [hl]
- ret
-
-DeleteSaveData:
- farcall DeleteSaveData_
- jp Init
-
-ResetClock:
- farcall ResetClock_
- jp Init
-
-Function64b1: ; 64b1 (1:64b1)
- ld a, [wce65]
- and $3
- ret nz
-IF DEF(GOLD)
- ld bc, wAnimatedObjectStruct10Index
- ld hl, $a
- add hl, bc
- ld l, [hl]
- ld h, $0
- add hl, hl
- add hl, hl
- ld de, .Data_64e0
- add hl, de
- ld a, [wce65]
- and $4
- srl a
- srl a
- ld e, a
- ld d, $0
- add hl, de
- add hl, de
- ld a, [hli]
- and a
- ret z
- ld e, a
- ld d, [hl]
-ENDC
-
-IF DEF(SILVER)
- ld de, $7c58
-ENDC
- ld a, $f
- call InitSpriteAnimStruct
- ret
-
-IF DEF(GOLD)
-.Data_64e0:
- db $5c, $50, $00, $00
- db $5c, $68, $5c, $58
- db $5c, $68, $5c, $78
- db $5c, $88, $5c, $78
- db $00, $00, $5c, $78
- db $00, $00, $5c, $58
-ENDC
-
-Copyright:
- call ClearTilemap
- call LoadFontsExtra
- ld de, CopyrightGFX
- ld hl, vTiles2 tile $60
- lb bc, BANK(CopyrightGFX), 30
- call Request2bpp
- hlcoord 2, 7
- ld de, CopyrightString
- jp PlaceString
-
-CopyrightString:
- db $60, $61, $62, $63, $7a, $7b, $7c, $7d
- db $65, $66, $67, $68, $69, $6a
- next $60, $61, $62, $63, $7a, $7b, $7c, $7d
- db $6b, $6c, $6d, $6e, $6f, $70, $71, $72
- next $60, $61, $62, $63, $7a, $7b, $7c, $7d
- db $73, $74, $75, $76, $77, $78, $79, $71, $72
- db "@"
-
-GameInit:: ; 6545 (1:6545)
- call ClearWindowData
- ld a, $5
- ld hl, $4f60
- rst FarCall
- jp IntroSequence