diff options
Diffstat (limited to 'engine')
-rw-r--r-- | engine/copy.asm | 431 | ||||
-rw-r--r-- | engine/decompress.asm | 367 | ||||
-rw-r--r-- | engine/delay.asm | 23 | ||||
-rw-r--r-- | engine/fade.asm | 134 | ||||
-rw-r--r-- | engine/farcall.asm | 55 | ||||
-rw-r--r-- | engine/fruit_trees.asm | 165 | ||||
-rw-r--r-- | engine/game_time.asm | 132 | ||||
-rw-r--r-- | engine/init.asm | 225 | ||||
-rw-r--r-- | engine/joypad.asm | 491 | ||||
-rw-r--r-- | engine/lcd.asm | 81 | ||||
-rw-r--r-- | engine/map_objects.asm | 683 | ||||
-rw-r--r-- | engine/menu.asm | 603 | ||||
-rw-r--r-- | engine/palettes.asm | 347 | ||||
-rw-r--r-- | engine/rtc.asm | 25 | ||||
-rw-r--r-- | engine/scripting.asm | 8 | ||||
-rw-r--r-- | engine/serial.asm | 408 | ||||
-rw-r--r-- | engine/sine.asm | 22 | ||||
-rw-r--r-- | engine/std_scripts.asm | 2619 | ||||
-rw-r--r-- | engine/text.asm | 1230 | ||||
-rw-r--r-- | engine/time.asm | 311 | ||||
-rw-r--r-- | engine/vblank.asm | 541 | ||||
-rw-r--r-- | engine/video.asm | 487 |
22 files changed, 2788 insertions, 6600 deletions
diff --git a/engine/copy.asm b/engine/copy.asm deleted file mode 100644 index ad25c96e6..000000000 --- a/engine/copy.asm +++ /dev/null @@ -1,431 +0,0 @@ -; Functions to copy data from ROM. - - -Functiondc9: ; dc9 - ld a, [rLCDC] - bit 7, a - jp z, Copy2bpp - - ld a, [hROMBank] - push af - ld a, BANK(Function104284) - rst Bankswitch - call Function104284 - pop af - rst Bankswitch - - ret -; ddc - -Functionddc: ; ddc - ld a, [rLCDC] - bit 7, a - jp z, Copy1bpp - - ld a, [hROMBank] - push af - ld a, BANK(Function1042b2) - rst Bankswitch - call Function1042b2 - pop af - rst Bankswitch - - ret -; def - -Functiondef: ; def - ld [hBuffer], a - ld a, [hROMBank] - push af - ld a, [hBuffer] - rst Bankswitch - call FarCopyBytesDouble - pop af - rst Bankswitch - ret -; dfd - -Functiondfd: ; dfd - dec c - ld a, [hBGMapMode] - push af - xor a - ld [hBGMapMode], a - ld a, [hROMBank] - push af - ld a, b - rst Bankswitch - -.asm_e09 - ld a, d - ld [rHDMA1], a - ld a, e - and $f0 - ld [rHDMA2], a - ld a, h - and $1f - ld [rHDMA3], a - ld a, l - and $f0 - ld [rHDMA4], a - ld a, c - cp $8 - jr c, .asm_e3c - sub $8 - ld c, a - ld a, $f - ld [hDMATransfer], a - call DelayFrame - ld a, l - add $0 - ld l, a - ld a, h - adc $1 - ld h, a - ld a, e - add $0 - ld e, a - ld a, d - adc $1 - ld d, a - jr .asm_e09 - -.asm_e3c - ld a, c - and $7f - ld [hDMATransfer], a - call DelayFrame - pop af - rst Bankswitch - - pop af - ld [hBGMapMode], a - ret -; e4a - - - -Functione4a: ; e4a - ld a, $5 - ld hl, $4135 - rst FarCall - ret -; e51 - - - -Functione51: ; e51 - ld a, $3e - ld hl, $7449 - rst FarCall - ret -; e58 - -Functione58: ; e58 - ld a, $3e - ld hl, $74be - rst FarCall - ret -; e5f - - - -Functione5f: ; e5f - ld a, $3e - ld hl, $748a - rst FarCall - ld a, $3e - ld hl, $74b0 - rst FarCall - ret -; e6c - -Functione6c: ; e6c - ld a, $3e - ld hl, $74b0 - rst FarCall - ret -; e73 - -Functione73: ; e73 - push de - ld a, $0 - call GetSRAMBank - push bc - ld de, $a000 - ld a, b - call FarDecompress - pop bc - pop hl - ld de, $a000 - call Request2bpp - call CloseSRAM - ret -; e8d - - - -FarCopyBytes: ; e8d -; copy bc bytes from a:hl to de - - ld [hBuffer], a - ld a, [hROMBank] - push af - ld a, [hBuffer] - rst Bankswitch - - call CopyBytes - - pop af - rst Bankswitch - ret -; 0xe9b - - -FarCopyBytesDouble: ; e9b -; Copy bc bytes from a:hl to bc*2 bytes at de, -; doubling each byte in the process. - - ld [hBuffer], a - ld a, [hROMBank] - push af - ld a, [hBuffer] - rst Bankswitch - -; switcheroo, de <> hl - ld a, h - ld h, d - ld d, a - ld a, l - ld l, e - ld e, a - - inc b - inc c - jr .dec - -.loop - ld a, [de] - inc de - ld [hli], a - ld [hli], a -.dec - dec c - jr nz, .loop - dec b - jr nz, .loop - - pop af - rst Bankswitch - ret -; 0xeba - - -Request2bpp: ; eba - ld a, [hBGMapMode] - push af - xor a - ld [hBGMapMode], a - - ld a, [hROMBank] - push af - ld a, b - rst Bankswitch - - ld a, [$ffd3] - push af - - ld a, $8 - ld [$ffd3], a - ld a, [InLinkBattle] - cp $4 - jr nz, .asm_edc - ld a, [$ffe9] - and a - jr nz, .asm_edc - ld a, $6 - ld [$ffd3], a - -.asm_edc - ld a, e - ld [Requested2bppSource], a - ld a, d - ld [Requested2bppSource + 1], a - ld a, l - ld [Requested2bppDest], a - ld a, h - ld [Requested2bppDest + 1], a - -.asm_eec - ld a, c - ld hl, $ffd3 - cp [hl] - jr nc, .asm_f08 - - ld [Requested2bpp], a -.wait - call DelayFrame - ld a, [Requested2bpp] - and a - jr nz, .wait - - pop af - ld [$ffd3], a - - pop af - rst Bankswitch - - pop af - ld [hBGMapMode], a - ret - -.asm_f08 - ld a, [$ffd3] - ld [Requested2bpp], a -.asm_f0d - call DelayFrame - ld a, [Requested2bpp] - and a - jr nz, .asm_f0d - ld a, c - ld hl, $ffd3 - sub [hl] - ld c, a - jr .asm_eec -; f1e - - -Request1bpp: ; f1e - ld a, [hBGMapMode] - push af - xor a - ld [hBGMapMode], a - - ld a, [hROMBank] - push af - ld a, b - rst Bankswitch - - ld a, [$ffd3] - push af - - ld a, $8 - ld [$ffd3], a - ld a, [InLinkBattle] - cp $4 - jr nz, .asm_f40 - ld a, [$ffe9] - and a - jr nz, .asm_f40 - ld a, $6 - ld [$ffd3], a - -.asm_f40 - ld a, e - ld [Requested1bppSource], a - ld a, d - ld [Requested1bppSource + 1], a - ld a, l - ld [Requested1bppDest], a - ld a, h - ld [Requested1bppDest + 1], a -.asm_f50 - ld a, c - ld hl, $ffd3 - cp [hl] - jr nc, .asm_f6c - - ld [Requested1bpp], a -.wait - call DelayFrame - ld a, [Requested1bpp] - and a - jr nz, .wait - - pop af - ld [$ffd3], a - - pop af - rst Bankswitch - - pop af - ld [hBGMapMode], a - ret - -.asm_f6c - ld a, [$ffd3] - ld [Requested1bpp], a -.asm_f71 - call DelayFrame - ld a, [Requested1bpp] - and a - jr nz, .asm_f71 - ld a, c - ld hl, $ffd3 - sub [hl] - ld c, a - jr .asm_f50 -; f82 - - -Get2bpp: ; f82 - ld a, [rLCDC] - bit 7, a - jp nz, Request2bpp - -Copy2bpp: ; f89 -; copy c 2bpp tiles from b:de to hl - - push hl - ld h, d - ld l, e - pop de - -; bank - ld a, b - -; bc = c * $10 - push af - swap c - ld a, $f - and c - ld b, a - ld a, $f0 - and c - ld c, a - pop af - - jp FarCopyBytes -; f9d - - -Get1bpp: ; f9d - ld a, [rLCDC] - bit 7, a - jp nz, Request1bpp - -Copy1bpp: ; fa4 -; copy c 1bpp tiles from b:de to hl - - push de - ld d, h - ld e, l - -; bank - ld a, b - -; bc = c * $10 / 2 - push af - ld h, 0 - ld l, c - add hl, hl - add hl, hl - add hl, hl - ld b, h - ld c, l - pop af - - pop hl - jp FarCopyBytesDouble -; fb6 - diff --git a/engine/decompress.asm b/engine/decompress.asm deleted file mode 100644 index 8d39cd968..000000000 --- a/engine/decompress.asm +++ /dev/null @@ -1,367 +0,0 @@ -FarDecompress: ; b40 -; Decompress graphics data at a:hl to de - -; put a away for a sec - ld [$c2c4], a -; save bank - ld a, [hROMBank] - push af -; bankswitch - ld a, [$c2c4] - rst Bankswitch - -; what we came here for - call Decompress - -; restore bank - pop af - rst Bankswitch - ret -; b50 - - -Decompress: ; b50 -; Pokemon Crystal uses an lz variant for compression. - -; This is mainly used for graphics, but the intro's -; tilemaps also use this compression. - -; This function decompresses lz-compressed data at hl to de. - - -; Basic rundown: - -; A typical control command consists of: -; -the command (bits 5-7) -; -the count (bits 0-4) -; -and any additional params - -; $ff is used as a terminator. - - -; Commands: - -; 0: literal -; literal data for some number of bytes -; 1: iterate -; one byte repeated for some number of bytes -; 2: alternate -; two bytes alternated for some number of bytes -; 3: zero (whitespace) -; 0x00 repeated for some number of bytes - -; Repeater control commands have a signed parameter used to determine the start point. -; Wraparound is simulated: -; Positive values are added to the start address of the decompressed data -; and negative values are subtracted from the current position. - -; 4: repeat -; repeat some number of bytes from decompressed data -; 5: flipped -; repeat some number of flipped bytes from decompressed data -; ex: $ad = %10101101 -> %10110101 = $b5 -; 6: reverse -; repeat some number of bytes in reverse from decompressed data - -; If the value in the count needs to be larger than 5 bits, -; control code 7 can be used to expand the count to 10 bits. - -; A new control command is read in bits 2-4. -; The new 10-bit count is split: -; bits 0-1 contain the top 2 bits -; another byte is added containing the latter 8 - -; So, the structure of the control command becomes: -; 111xxxyy yyyyyyyy -; | | | | -; | | our new count -; | the control command for this count -; 7 (this command) - -; For more information, refer to the code below and in extras/gfx.py . - -; save starting output address - ld a, e - ld [$c2c2], a - ld a, d - ld [$c2c3], a - -.loop -; get next byte - ld a, [hl] -; done? - cp $ff ; end - ret z - -; get control code - and %11100000 - -; 10-bit param? - cp $e0 ; LZ_HI - jr nz, .normal - - -; 10-bit param: - -; get next 3 bits (%00011100) - ld a, [hl] - add a - add a ; << 3 - add a - -; this is our new control code - and %11100000 - push af - -; get param hi - ld a, [hli] - and %00000011 - ld b, a - -; get param lo - ld a, [hli] - ld c, a - -; read at least 1 byte - inc bc - jr .readers - - -.normal -; push control code - push af -; get param - ld a, [hli] - and %00011111 - ld c, a - ld b, $0 -; read at least 1 byte - inc c - -.readers -; let's get started - -; inc loop counts since we bail as soon as they hit 0 - inc b - inc c - -; get control code - pop af -; command type - bit 7, a ; 80, a0, c0 - jr nz, .repeatertype - -; literals - cp $20 ; LZ_ITER - jr z, .iter - cp $40 ; LZ_ALT - jr z, .alt - cp $60 ; LZ_ZERO - jr z, .zero - ; else $00 - -; 00 ; LZ_LIT -; literal data for bc bytes -.loop1 -; done? - dec c - jr nz, .next1 - dec b - jp z, .loop - -.next1 - ld a, [hli] - ld [de], a - inc de - jr .loop1 - - -; 20 ; LZ_ITER -; write byte for bc bytes -.iter - ld a, [hli] - -.iterloop - dec c - jr nz, .iternext - dec b - jp z, .loop - -.iternext - ld [de], a - inc de - jr .iterloop - - -; 40 ; LZ_ALT -; alternate two bytes for bc bytes - -; next pair -.alt -; done? - dec c - jr nz, .alt0 - dec b - jp z, .altclose0 - -; alternate for bc -.alt0 - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .alt1 -; done? - dec b - jp z, .altclose1 -.alt1 - ld a, [hld] - ld [de], a - inc de - jr .alt - -; skip past the bytes we were alternating -.altclose0 - inc hl -.altclose1 - inc hl - jr .loop - - -; 60 ; LZ_ZERO -; write 00 for bc bytes -.zero - xor a - -.zeroloop - dec c - jr nz, .zeronext - dec b - jp z, .loop - -.zeronext - ld [de], a - inc de - jr .zeroloop - - -; repeats -; 80, a0, c0 -; repeat decompressed data from output -.repeatertype - push hl - push af -; get next byte - ld a, [hli] -; absolute? - bit 7, a - jr z, .absolute - -; relative -; a = -a - and %01111111 ; forget the bit we just looked at - cpl -; add de (current output address) - add e - ld l, a - ld a, $ff ; -1 - adc d - ld h, a - jr .repeaters - -.absolute -; get next byte (lo) - ld l, [hl] -; last byte (hi) - ld h, a -; add starting output address - ld a, [$c2c2] - add l - ld l, a - ld a, [$c2c3] - adc h - ld h, a - -.repeaters - pop af - cp $80 ; LZ_REPEAT - jr z, .repeat - cp $a0 ; LZ_FLIP - jr z, .flip - cp $c0 ; LZ_REVERSE - jr z, .reverse - -; e0 -> 80 - -; 80 ; LZ_REPEAT -; repeat some decompressed data -.repeat -; done? - dec c - jr nz, .repeatnext - dec b - jr z, .cleanup - -.repeatnext - ld a, [hli] - ld [de], a - inc de - jr .repeat - - -; a0 ; LZ_FLIP -; repeat some decompressed data w/ flipped bit order -.flip - dec c - jr nz, .flipnext - dec b - jp z, .cleanup - -.flipnext - ld a, [hli] - push bc - ld bc, $0008 - -.fliploop - rra - rl b - dec c - jr nz, .fliploop - ld a, b - pop bc - ld [de], a - inc de - jr .flip - - -; c0 ; LZ_REVERSE -; repeat some decompressed data in reverse -.reverse - dec c - jr nz, .reversenext - - dec b - jp z, .cleanup - -.reversenext - ld a, [hld] - ld [de], a - inc de - jr .reverse - - -.cleanup -; get type of repeat we just used - pop hl -; was it relative or absolute? - bit 7, [hl] - jr nz, .next - -; skip two bytes for absolute - inc hl -; skip one byte for relative -.next - inc hl - jp .loop -; c2f - diff --git a/engine/delay.asm b/engine/delay.asm deleted file mode 100644 index 4e8b2147c..000000000 --- a/engine/delay.asm +++ /dev/null @@ -1,23 +0,0 @@ -DelayFrame: ; 45a -; Wait for one frame - ld a, 1 - ld [VBlankOccurred], a - -; Wait for the next VBlank, halting to conserve battery -.halt - halt ; rgbasm adds a nop after this instruction by default - ld a, [VBlankOccurred] - and a - jr nz, .halt - ret -; 468 - - -DelayFrames: ; 468 -; Wait c frames - call DelayFrame - dec c - jr nz, DelayFrames - ret -; 46f - diff --git a/engine/fade.asm b/engine/fade.asm deleted file mode 100644 index d67211e29..000000000 --- a/engine/fade.asm +++ /dev/null @@ -1,134 +0,0 @@ -; Functions to fade the screen in and out. - - -Function48c: ; 48c - ld a, [TimeOfDayPal] - ld b, a - ld hl, IncGradGBPalTable_11 - ld a, l - sub b - ld l, a - jr nc, .asm_499 - dec h - -.asm_499 - ld a, [hli] - ld [rBGP], a - ld a, [hli] - ld [rOBP0], a - ld a, [hli] - ld [rOBP1], a - ret -; 4a3 - - -Function4a3: ; 4a3 - ld a, [hCGB] - and a - jr z, .asm_4af - ld hl, IncGradGBPalTable_00 - ld b, 4 - jr FadeOut - -.asm_4af - ld hl, IncGradGBPalTable_08 - ld b, 4 - jr FadeOut -; 4b6 - -Function4b6: ; 4b6 - ld a, [hCGB] - and a - jr z, .asm_4c2 - ld hl, IncGradGBPalTable_05 - ld b, 3 - jr FadeOut - -.asm_4c2 - ld hl, IncGradGBPalTable_13 - ld b, 3 -; 4c7 - -FadeOut: ; 4c7 - push de - ld a, [hli] - call DmgToCgbBGPals - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - call DmgToCgbObjPals - ld c, 8 - call DelayFrames - pop de - dec b - jr nz, FadeOut - ret -; 4dd - -Function4dd: ; 4dd - ld a, [hCGB] - and a - jr z, .asm_4e9 - ld hl, IncGradGBPalTable_04 - 1 - ld b, 4 - jr FadeIn - -.asm_4e9 - ld hl, IncGradGBPalTable_12 - 1 - ld b, 4 - jr FadeIn -; 4f0 - -Function4f0: ; 4f0 - ld a, [hCGB] - and a - jr z, .asm_4fc - ld hl, IncGradGBPalTable_07 - 1 - ld b, 3 - jr FadeIn - -.asm_4fc - ld hl, IncGradGBPalTable_15 - 1 - ld b, 3 - ; fallthrough -; 501 - -FadeIn: ; 501 - push de - ld a, [hld] - ld d, a - ld a, [hld] - ld e, a - call DmgToCgbObjPals - ld a, [hld] - call DmgToCgbBGPals - ld c, 8 - call DelayFrames - pop de - dec b - jr nz, FadeIn - ret -; 517 - - -; 517 -IncGradGBPalTable_00: db %11111111, %11111111, %11111111 -IncGradGBPalTable_01: db %11111110, %11111110, %11111110 -IncGradGBPalTable_02: db %11111001, %11111001, %11111001 -IncGradGBPalTable_03: db %11100100, %11100100, %11100100 -IncGradGBPalTable_04: db %11100100, %11100100, %11100100 -IncGradGBPalTable_05: db %10010000, %10010000, %10010000 -IncGradGBPalTable_06: db %01000000, %01000000, %01000000 -IncGradGBPalTable_07: db %00000000, %00000000, %00000000 -; bgp obp1 obp2 -IncGradGBPalTable_08: db %11111111, %11111111, %11111111 -IncGradGBPalTable_09: db %11111110, %11111110, %11111000 -IncGradGBPalTable_10: db %11111001, %11100100, %11100100 -IncGradGBPalTable_11: db %11100100, %11010000, %11100000 -IncGradGBPalTable_12: db %11100100, %11010000, %11100000 -IncGradGBPalTable_13: db %10010000, %10000000, %10010000 -IncGradGBPalTable_14: db %01000000, %01000000, %01000000 -IncGradGBPalTable_15: db %00000000, %00000000, %00000000 -; 547 - diff --git a/engine/farcall.asm b/engine/farcall.asm deleted file mode 100644 index bdee3bf38..000000000 --- a/engine/farcall.asm +++ /dev/null @@ -1,55 +0,0 @@ -FarCall_de: ; 2d54 -; Call a:de. -; Preserves other registers. - - ld [hBuffer], a - ld a, [hROMBank] - push af - ld a, [hBuffer] - rst Bankswitch - call .de - jr ReturnFarCall - -.de - push de - ret -; 2d63 - - -FarCall_hl: ; 2d63 -; Call a:hl. -; Preserves other registers. - - ld [hBuffer], a - ld a, [hROMBank] - push af - ld a, [hBuffer] - rst Bankswitch - call Function2d82 -; 2d6e - -ReturnFarCall: ; 2d6e -; We want to retain the contents of f. -; To do this, we can pop to bc instead of af. - - ld a, b - ld [$cfb9], a - ld a, c - ld [$cfba], a - -; Restore the working bank. - pop bc - ld a, b - rst Bankswitch - - ld a, [$cfb9] - ld b, a - ld a, [$cfba] - ld c, a - ret -; 2d82 - -Function2d82: ; 2d82 - jp [hl] -; 2d83 - diff --git a/engine/fruit_trees.asm b/engine/fruit_trees.asm new file mode 100644 index 000000000..5890d6784 --- /dev/null +++ b/engine/fruit_trees.asm @@ -0,0 +1,165 @@ +FruitTreeScript: ; 44000 + 3callasm BANK(GetCurTreeFruit), GetCurTreeFruit + loadfont + copybytetovar CurFruit + itemtotext $0, $0 + 2writetext FruitBearingTreeText + keeptextopen + 3callasm BANK(TryResetFruitTrees), TryResetFruitTrees + 3callasm BANK(CheckFruitTree), CheckFruitTree + iffalse .fruit + 2writetext NothingHereText + closetext + 2jump .end + +.fruit + 2writetext HeyItsFruitText + copybytetovar CurFruit + giveitem $ff, 1 + iffalse .packisfull + keeptextopen + 2writetext ObtainedFruitText + 3callasm BANK(PickedFruitTree), PickedFruitTree + specialsound + itemnotify + 2jump .end + +.packisfull + keeptextopen + 2writetext FruitPackIsFullText + closetext + +.end + loadmovesprites + end +; 44041 + +GetCurTreeFruit: ; 44041 + ld a, [CurFruitTree] + dec a + call GetFruitTreeItem + ld [CurFruit], a + ret +; 4404c + +TryResetFruitTrees: ; 4404c + ld hl, $dc1e + bit 4, [hl] + ret nz + jp ResetFruitTrees +; 44055 + +CheckFruitTree: ; 44055 + ld b, 2 + call GetFruitTreeFlag + ld a, c + ld [ScriptVar], a + ret +; 4405f + +PickedFruitTree: ; 4405f + ld a, $41 + ld hl, $609b + rst FarCall ; empty function + + ld b, 1 + jp GetFruitTreeFlag +; 4406a + +ResetFruitTrees: ; 4406a + xor a + ld hl, FruitTreeFlags + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld hl, $dc1e + set 4, [hl] + ret +; 44078 + +GetFruitTreeFlag: ; 44078 + push hl + push de + ld a, [CurFruitTree] + dec a + ld e, a + ld d, 0 + ld hl, FruitTreeFlags + call FlagAction + pop de + pop hl + ret +; 4408a + +GetFruitTreeItem: ; 4408a + push hl + push de + ld e, a + ld d, 0 + ld hl, FruitTreeItems + add hl, de + ld a, [hl] + pop de + pop hl + ret +; 44097 + +FruitTreeItems: ; 44097 + db BERRY + db BERRY + db BERRY + db BERRY + db PSNCUREBERRY + db PSNCUREBERRY + db BITTER_BERRY + db BITTER_BERRY + db PRZCUREBERRY + db PRZCUREBERRY + db MYSTERYBERRY + db MYSTERYBERRY + db ICE_BERRY + db ICE_BERRY + db MINT_BERRY + db BURNT_BERRY + db RED_APRICORN + db BLU_APRICORN + db BLK_APRICORN + db WHT_APRICORN + db PNK_APRICORN + db GRN_APRICORN + db YLW_APRICORN + db BERRY + db PSNCUREBERRY + db BITTER_BERRY + db PRZCUREBERRY + db ICE_BERRY + db MINT_BERRY + db BURNT_BERRY +; 440b5 + +FruitBearingTreeText: ; 440b5 + text_jump _FruitBearingTreeText, BANK(_FruitBearingTreeText) + db "@" +; 440ba + +HeyItsFruitText: ; 440ba + text_jump _HeyItsFruitText, BANK(_HeyItsFruitText) + db "@" +; 440bf + +ObtainedFruitText: ; 440bf + text_jump _ObtainedFruitText, BANK(_ObtainedFruitText) + db "@" +; 440c4 + +FruitPackIsFullText: ; 440c4 + text_jump _FruitPackIsFullText, BANK(_FruitPackIsFullText) + db "@" +; 440c9 + +NothingHereText: ; 440c9 + text_jump _NothingHereText, BANK(_NothingHereText) + db "@" +; 440ce + diff --git a/engine/game_time.asm b/engine/game_time.asm deleted file mode 100644 index ee52488f4..000000000 --- a/engine/game_time.asm +++ /dev/null @@ -1,132 +0,0 @@ -ResetGameTime: ; 208a - xor a - ld [GameTimeCap], a - ld [GameTimeHours], a - ld [GameTimeHours + 1], a - ld [GameTimeMinutes], a - ld [GameTimeSeconds], a - ld [GameTimeFrames], a - ret -; 209e - - -GameTimer: ; 209e - - nop - - ld a, [rSVBK] - push af - ld a, 1 - ld [rSVBK], a - - call UpdateGameTimer - - pop af - ld [rSVBK], a - ret -; 20ad - - -UpdateGameTimer: ; 20ad -; Increment the game timer by one frame. -; The game timer is capped at 999:59:59.00. - - -; Don't update if game logic is paused. - ld a, [$c2cd] - and a - ret nz - -; Is the timer paused? - ld hl, GameTimerPause - bit 0, [hl] - ret z - -; Is the timer already capped? - ld hl, GameTimeCap - bit 0, [hl] - ret nz - - -; +1 frame - ld hl, GameTimeFrames - ld a, [hl] - inc a - - cp 60 ; frames/second - jr nc, .second - - ld [hl], a - ret - - -.second - xor a - ld [hl], a - -; +1 second - ld hl, GameTimeSeconds - ld a, [hl] - inc a - - cp 60 ; seconds/minute - jr nc, .minute - - ld [hl], a - ret - - -.minute - xor a - ld [hl], a - -; +1 minute - ld hl, GameTimeMinutes - ld a, [hl] - inc a - - cp 60 ; minutes/hour - jr nc, .hour - - ld [hl], a - ret - - -.hour - xor a - ld [hl], a - -; +1 hour - ld a, [GameTimeHours] - ld h, a - ld a, [GameTimeHours + 1] - ld l, a - inc hl - - -; Cap the timer after 1000 hours. - ld a, h - cp 1000 / $100 - jr c, .ok - - ld a, l - cp 1000 % $100 - jr c, .ok - - ld hl, GameTimeCap - set 0, [hl] - - ld a, 59 ; 999:59:59.00 - ld [GameTimeMinutes], a - ld [GameTimeSeconds], a - ret - - -.ok - ld a, h - ld [GameTimeHours], a - ld a, l - ld [GameTimeHours + 1], a - ret -; 210f - diff --git a/engine/init.asm b/engine/init.asm deleted file mode 100644 index 3104c416d..000000000 --- a/engine/init.asm +++ /dev/null @@ -1,225 +0,0 @@ -Reset: ; 150 - di - call CleanSoundRestart - xor a - ld [$ffde], a - call ClearPalettes - xor a - ld [rIF], a - ld a, 1 ; VBlank int - ld [rIE], a - ei - - ld hl, $cfbe - set 7, [hl] - - ld c, 32 - call DelayFrames - - jr Init -; 16e - - -_Start: ; 16e - cp $11 - jr z, .asm_175 - xor a - jr .asm_177 - -.asm_175 - ld a, $1 - -.asm_177 - ld [hCGB], a - ld a, $1 - ld [$ffea], a -; 17d - - -Init: ; 17d - - di - - xor a - ld [rIF], a - ld [rIE], a - ld [rRP], a - ld [rSCX], a - ld [rSCY], a - ld [rSB], a - ld [rSC], a - ld [rWX], a - ld [rWY], a - ld [rBGP], a - ld [rOBP0], a - ld [rOBP1], a - ld [rTMA], a - ld [rTAC], a - ld [$d000], a - - ld a, %100 ; Start timer at 4096Hz - ld [rTAC], a - -.wait - ld a, [rLY] - cp 145 - jr nz, .wait - - xor a - ld [rLCDC], a - -; Clear WRAM bank 0 - ld hl, $c000 - ld bc, $d000 - $c000 -.asm_1b1 - ld [hl], 0 - inc hl - dec bc - ld a, b - or c - jr nz, .asm_1b1 - - ld sp, Stack - -; Clear HRAM - ld a, [hCGB] - push af - ld a, [$ffea] - push af - xor a - ld hl, $ff80 - ld bc, $ffff - $ff80 - call ByteFill - pop af - ld [$ffea], a - pop af - ld [hCGB], a - - call ClearWRAM - ld a, 1 - ld [rSVBK], a - call ClearVRAM - call ClearSprites - call Function270 - - - ld a, BANK(LoadPushOAM) - rst Bankswitch - - call LoadPushOAM - - xor a - ld [$ffde], a - ld [hSCX], a - ld [hSCY], a - ld [rJOYP], a - - ld a, $8 ; HBlank int enable - ld [rSTAT], a - - ld a, $90 - ld [hWY], a - ld [rWY], a - - ld a, 7 - ld [hWX], a - ld [rWX], a - - ld a, %11100011 - ; LCD on - ; Win tilemap 1 - ; Win on - ; BG/Win tiledata 0 - ; BG Tilemap 0 - ; OBJ 8x8 - ; OBJ on - ; BG on - ld [rLCDC], a - - ld a, $ff - ld [$ffcb], a - - callba Function9890 - - ld a, $9c - ld [$ffd7], a - - xor a - ld [hBGMapAddress], a - - callba StartClock - - xor a - ld [MBC3LatchClock], a - ld [MBC3SRamEnable], a - - ld a, [hCGB] - and a - jr z, .asm_22b - call Function2ff7 -.asm_22b - - xor a - ld [rIF], a - ld a, %1111 ; VBlank, LCDStat, Timer, Serial interrupts - ld [rIE], a - ei - - call DelayFrame - - ld a, $30 - call Predef - - call CleanSoundRestart - xor a - ld [CurMusic], a - jp GameInit -; 245 - - -ClearVRAM: ; 245 -; Wipe VRAM banks 0 and 1 - - ld a, 1 - ld [rVBK], a - call .clear - - xor a - ld [rVBK], a -.clear - ld hl, VTiles0 - ld bc, $2000 - xor a - call ByteFill - ret -; 25a - -ClearWRAM: ; 25a -; Wipe swappable WRAM banks (1-7) - - ld a, 1 -.asm_25c - push af - ld [rSVBK], a - xor a - ld hl, $d000 - ld bc, $1000 - call ByteFill - pop af - inc a - cp 8 - jr nc, .asm_25c - ret -; 270 - -Function270: ; 270 - ld a, $0 - call GetSRAMBank - ld hl, $a000 - ld bc, $0020 - xor a - call ByteFill - call CloseSRAM - ret -; 283 - diff --git a/engine/joypad.asm b/engine/joypad.asm deleted file mode 100644 index 388c84e22..000000000 --- a/engine/joypad.asm +++ /dev/null @@ -1,491 +0,0 @@ -JoypadInt: ; 92e -; Replaced by Joypad, called from VBlank instead of the useless -; joypad interrupt. - -; This is a placeholder in case the interrupt is somehow enabled. - reti -; 92f - -ClearJoypadPublic: ; 92f - xor a -; Pressed this frame (delta) - ld [hJoyPressed], a -; Currently pressed - ld [hJoyDown], a - ret -; 935 - -Joypad: ; 935 -; Read the joypad register and translate it to something more -; workable for use in-game. There are 8 buttons, so we can use -; one byte to contain all player input. - -; Updates: - -; hJoypadReleased: released this frame (delta) -; hJoypadPressed: pressed this frame (delta) -; hJoypadDown: currently pressed -; hJoypadSum: pressed so far - -; Any of these three bits can be used to disable input. - ld a, [$cfbe] - and %11010000 - ret nz - -; If we're saving, input is disabled. - ld a, [$c2cd] - and a - ret nz - -; We can only get four inputs at a time. -; We take d-pad first for no particular reason. - ld a, D_PAD - ld [rJOYP], a -; Read twice to give the request time to take. - ld a, [rJOYP] - ld a, [rJOYP] - -; The Joypad register output is in the lo nybble (inversed). -; We make the hi nybble of our new container d-pad input. - cpl - and $f - swap a - -; We'll keep this in b for now. - ld b, a - -; Buttons make 8 total inputs (A, B, Select, Start). -; We can fit this into one byte. - ld a, BUTTONS - ld [rJOYP], a -; Wait for input to stabilize. - ld a, [rJOYP] - ld a, [rJOYP] - ld a, [rJOYP] - ld a, [rJOYP] - ld a, [rJOYP] - ld a, [rJOYP] -; Buttons take the lo nybble. - cpl - and $f - or b - ld b, a - -; Reset the joypad register since we're done with it. - ld a, $30 - ld [rJOYP], a - -; To get the delta we xor the last frame's input with the new one. - ld a, [hJoypadDown] ; last frame - ld e, a - xor b - ld d, a -; Released this frame: - and e - ld [hJoypadReleased], a -; Pressed this frame: - ld a, d - and b - ld [hJoypadPressed], a - -; Add any new presses to the list of collective presses: - ld c, a - ld a, [hJoypadSum] - or c - ld [hJoypadSum], a - -; Currently pressed: - ld a, b - ld [hJoypadDown], a - -; Now that we have the input, we can do stuff with it. - -; For example, soft reset: - and BUTTON_A | BUTTON_B | SELECT | START - cp BUTTON_A | BUTTON_B | SELECT | START - jp z, Reset - - ret -; 984 - - -GetJoypadPublic: ; 984 -; Update mirror joypad input from hJoypadDown (real input) - -; hJoyReleased: released this frame (delta) -; hJoyPressed: pressed this frame (delta) -; hJoyDown: currently pressed - -; bit 0 A -; 1 B -; 2 SELECT -; 3 START -; 4 RIGHT -; 5 LEFT -; 6 UP -; 7 DOWN - - push af - push hl - push de - push bc - -; The player input can be automated using an input stream. -; See more below. - ld a, [InputType] - cp a, AUTO_INPUT - jr z, .auto - -; To get deltas, take this and last frame's input. - ld a, [hJoypadDown] ; real input - ld b, a - ld a, [hJoyDown] ; last frame mirror - ld e, a - -; Released this frame: - xor b - ld d, a - and e - ld [hJoyReleased], a - -; Pressed this frame: - ld a, d - and b - ld [hJoyPressed], a - -; It looks like the collective presses got commented out here. - ld c, a - -; Currently pressed: - ld a, b - ld [hJoyDown], a ; frame input - -.quit - pop bc - pop de - pop hl - pop af - ret - -.auto -; Use a predetermined input stream (used in the catching tutorial). - -; Stream format: [input][duration] -; A value of $ff will immediately end the stream. - -; Read from the input stream. - ld a, [hROMBank] - push af - ld a, [AutoInputBank] - rst Bankswitch - - ld hl, AutoInputAddress - ld a, [hli] - ld h, [hl] - ld l, a - -; We only update when the input duration has expired. - ld a, [AutoInputLength] - and a - jr z, .updateauto - -; Until then, don't change anything. - dec a - ld [AutoInputLength], a - pop af - rst Bankswitch - jr .quit - - -.updateauto -; An input of $ff will end the stream. - ld a, [hli] - cp a, $ff - jr z, .stopauto - ld b, a - -; A duration of $ff will end the stream indefinitely. - ld a, [hli] - ld [AutoInputLength], a - cp a, $ff - jr nz, .next - -; The current input is overwritten. - dec hl - dec hl - ld b, NO_INPUT - jr .finishauto - -.next -; On to the next input... - ld a, l - ld [AutoInputAddress], a - ld a, h - ld [AutoInputAddress+1], a - jr .finishauto - -.stopauto - call StopAutoInput - ld b, NO_INPUT - -.finishauto - pop af - rst Bankswitch - ld a, b - ld [hJoyPressed], a ; pressed - ld [hJoyDown], a ; input - jr .quit -; 9ee - - -StartAutoInput: ; 9ee -; Start reading automated input stream at a:hl. - - ld [AutoInputBank], a - ld a, l - ld [AutoInputAddress], a - ld a, h - ld [AutoInputAddress+1], a -; Start reading the stream immediately. - xor a - ld [AutoInputLength], a -; Reset input mirrors. - xor a - ld [hJoyPressed], a ; pressed this frame - ld [hJoyReleased], a ; released this frame - ld [hJoyDown], a ; currently pressed - - ld a, AUTO_INPUT - ld [InputType], a - ret -; a0a - - -StopAutoInput: ; a0a -; Clear variables related to automated input. - xor a - ld [AutoInputBank], a - ld [AutoInputAddress], a - ld [AutoInputAddress+1], a - ld [AutoInputLength], a -; Back to normal input. - ld [InputType], a - ret -; a1b - - -Functiona1b: ; a1b - - call DelayFrame - - push bc - call Functiona57 - pop bc - - ld a, [hJoyDown] - cp D_UP | SELECT | BUTTON_B - jr z, .asm_a34 - - ld a, [$ffa9] - and START | BUTTON_A - jr nz, .asm_a34 - - dec c - jr nz, Functiona1b - - and a - ret - -.asm_a34 - scf - ret -; a36 - - -Functiona36: ; a36 - call DelayFrame - call GetJoypadPublic - ld a, [hJoyPressed] - and BUTTON_A | BUTTON_B - ret nz - call RTC - jr Functiona36 -; a46 - -Functiona46: ; a46 - ld a, [hOAMUpdate] - push af - ld a, 1 - ld [hOAMUpdate], a - call WaitBGMap - call Functiona36 - pop af - ld [hOAMUpdate], a - ret -; a57 - -Functiona57: ; a57 - call GetJoypadPublic - ld a, [$ffaa] - and a - ld a, [hJoyPressed] - jr z, .asm_a63 - ld a, [hJoyDown] -.asm_a63 - ld [$ffa9], a - ld a, [hJoyPressed] - and a - jr z, .asm_a70 - ld a, 15 - ld [TextDelayFrames], a - ret - -.asm_a70 - ld a, [TextDelayFrames] - and a - jr z, .asm_a7a - xor a - ld [$ffa9], a - ret - -.asm_a7a - ld a, 5 - ld [TextDelayFrames], a - ret -; a80 - -Functiona80: ; a80 - ld a, [$ffaf] - push af - ld a, [$ffb0] - push af - xor a - ld [$ffaf], a - ld a, $6 - ld [$ffb0], a -.asm_a8d - push hl - ld hl, $c606 - call Functionb06 - pop hl - call Functiona57 - ld a, [$ffa9] - and $3 - jr z, .asm_a8d - pop af - ld [$ffb0], a - pop af - ld [$ffaf], a - ret -; aa5 - -Functionaa5: ; aa5 - call Functiona57 - ld a, [$ffa9] - and BUTTON_A | BUTTON_B - jr z, Functionaa5 - ret -; aaf - -Functionaaf: ; aaf - ld a, [InLinkBattle] - and a - jr nz, .asm_ac1 - call Functionac6 - push de - ld de, SFX_READ_TEXT_2 - call StartSFX - pop de - ret - -.asm_ac1 - ld c, 65 - jp DelayFrames -; ac6 - -Functionac6: ; ac6 - ld a, [hOAMUpdate] - push af - ld a, $1 - ld [hOAMUpdate], a - ld a, [InputType] - or a - jr z, .asm_ad9 - callba Function1de28a -.asm_ad9 - call Functionaf5 - call Functiona57 - ld a, [hJoyPressed] - and $3 - jr nz, .asm_af1 - call RTC - ld a, $1 - ld [hBGMapMode], a - call DelayFrame - jr .asm_ad9 - -.asm_af1 - pop af - ld [hOAMUpdate], a - ret -; af5 - -Functionaf5: ; af5 - ld a, [$ff9b] - and $10 - jr z, .asm_aff - ld a, $ee - jr .asm_b02 - -.asm_aff - ld a, [$c605] - -.asm_b02 - ld [$c606], a - ret -; b06 - -Functionb06: ; b06 - push bc - ld a, [hl] - ld b, a - ld a, $ee - cp b - pop bc - jr nz, .asm_b27 - ld a, [$ffaf] - dec a - ld [$ffaf], a - ret nz - ld a, [$ffb0] - dec a - ld [$ffb0], a - ret nz - ld a, $7a - ld [hl], a - ld a, $ff - ld [$ffaf], a - ld a, $6 - ld [$ffb0], a - ret - -.asm_b27 - ld a, [$ffaf] - and a - ret z - dec a - ld [$ffaf], a - ret nz - dec a - ld [$ffaf], a - ld a, [$ffb0] - dec a - ld [$ffb0], a - ret nz - ld a, $6 - ld [$ffb0], a - ld a, $ee - ld [hl], a - ret -; b40 - diff --git a/engine/lcd.asm b/engine/lcd.asm deleted file mode 100644 index 9c86eaa5c..000000000 --- a/engine/lcd.asm +++ /dev/null @@ -1,81 +0,0 @@ -; LCD handling - - -Function547: ; 547 - ld a, [hLCDStatCustom] - cp rSCX & $ff - ret nz - ld c, a - ld a, [LYOverrides] - ld [$ff00+c], a - ret -; 552 - - -LCD: ; 552 - push af - ld a, [hLCDStatCustom] - and a - jr z, .done - -; At this point it's assumed we're in WRAM bank 5! - push bc - ld a, [rLY] - ld c, a - ld b, LYOverrides >> 8 - ld a, [bc] - ld b, a - ld a, [hLCDStatCustom] - ld c, a - ld a, b - ld [$ff00+c], a - pop bc - -.done - pop af - reti -; 568 - - -DisableLCD: ; 568 -; Turn the LCD off - -; Don't need to do anything if the LCD is already off - ld a, [rLCDC] - bit 7, a ; lcd enable - ret z - - xor a - ld [rIF], a - ld a, [rIE] - ld b, a - -; Disable VBlank - res 0, a ; vblank - ld [rIE], a - -.wait -; Wait until VBlank would normally happen - ld a, [rLY] - cp 145 - jr nz, .wait - - ld a, [rLCDC] - and %01111111 ; lcd enable off - ld [rLCDC], a - - xor a - ld [rIF], a - ld a, b - ld [rIE], a - ret -; 58a - - -EnableLCD: ; 58a - ld a, [rLCDC] - set 7, a ; lcd enable - ld [rLCDC], a - ret -; 591 - diff --git a/engine/map_objects.asm b/engine/map_objects.asm deleted file mode 100644 index 3ebc1b597..000000000 --- a/engine/map_objects.asm +++ /dev/null @@ -1,683 +0,0 @@ -; Functions handling map objects. - - -GetSpritePalette: ; 17ff - push hl - push de - push bc - ld c, a - callba _GetSpritePalette - ld a, c - pop bc - pop de - pop hl - ret -; 180e - - -Function180e: ; 180e - push hl - push bc - ld hl, $d156 - ld c, $1f - ld b, a - ld a, [hConnectionStripLength] - cp $0 - jr z, .asm_182b - ld a, b -.asm_181d - cp [hl] - jr z, .asm_1830 - inc hl - inc hl - dec c - jr nz, .asm_181d - ld a, [$d155] - scf - jr .asm_1833 - -.asm_182b - ld a, [$d155] - jr .asm_1833 - -.asm_1830 - inc hl - xor a - ld a, [hl] - -.asm_1833 - pop bc - pop hl - ret -; 1836 - -Function1836: ; 1836 - push de - push hl - - ld b, a - ld a, [hROMBank] - push af - ld a, BANK(Function142a7) - rst Bankswitch - - ld a, b - call Function142a7 - ld c, a - - pop de - ld a, d - rst Bankswitch - - pop hl - pop de - ret -; 184a - - - -Function184a: ; 184a - ld a, [StandingTile] - call GetTileCollision - ld b, a - ret -; 1852 - -Function1852: ; 1852 - ld a, [StandingTile] - call GetTileCollision - sub 1 - ret z - and a - ret -; 185d - - -GetTileCollision: ; 185d -; Get the collision type of tile a. - - push de - push hl - - ld hl, TileCollisionTable - ld e, a - ld d, 0 - add hl, de - - ld a, [hROMBank] - push af - ld a, BANK(TileCollisionTable) - rst Bankswitch - ld e, [hl] - pop af - rst Bankswitch - - ld a, e - and $f ; lo nybble only - - pop hl - pop de - ret -; 1875 - - -Function1875: ; 1875 - ld d, a - and $f0 - cp $10 - jr z, .asm_1882 - cp $20 - jr z, .asm_1888 - scf - ret - -.asm_1882 - ld a, d - and 7 - ret z - scf - ret - -.asm_1888 - ld a, d - and 7 - ret z - scf - ret -; 188e - -Function188e: ; 188e - cp $14 - ret z - cp $1c - ret -; 1894 - -CheckCutTreeTile: ; 1894 - cp $12 - ret z - cp $1a - ret -; 189a - -CheckHeadbuttTreeTile: ; 189a - cp $15 - ret z - cp $1d - ret -; 18a0 - -CheckCounterTile: ; 18a0 - cp $90 - ret z - cp $98 - ret -; 18a6 - -CheckPitTile: ; 18a6 - cp $60 - ret z - cp $68 - ret -; 18ac - -CheckIceTile: ; 18ac - cp $23 - ret z - cp $2b - ret z - scf - ret -; 18b4 - -CheckWhirlpoolTile: ; 18b4 - nop - cp $24 - ret z - cp $2c - ret z - scf - ret -; 18bd - -CheckWaterfallTile: ; 18bd - cp $33 - ret z - cp $3b - ret -; 18c3 - -CheckStandingOnEntrance: ; 18c3 - ld a, [StandingTile] - cp $71 ; door - ret z - cp $79 - ret z - cp $7a ; stairs - ret z - cp $7b ; cave - ret -; 18d2 - - -GetMapObject: ; 18d2 -; Return the location of map object a in bc. - ld hl, MapObjects - ld bc, $10 - call AddNTimes - ld b, h - ld c, l - ret -; 18de - - -Function18de: ; 18de - ld [hConnectionStripLength], a - call GetMapObject - ld hl, $0000 - add hl, bc - ld a, [hl] - cp $ff - jr z, .asm_18f3 - ld [hConnectedMapWidth], a - call Function1ae5 - and a - ret - -.asm_18f3 - scf - ret -; 18f5 - -Function18f5: ; 18f5 - ld hl, $0006 - add hl, bc - ld a, [hl] - cp $ff - jr nz, .asm_1921 - ld hl, $0007 - add hl, bc - ld a, [hl] - cp $ff - jr z, .asm_191c - ld hl, .data_191e - ld a, [TimeOfDay] - add l - ld l, a - jr nc, .asm_1912 - inc h - -.asm_1912 - ld a, [hl] - ld hl, $0007 - add hl, bc - and [hl] - jr nz, .asm_191c - scf - ret - -.asm_191c - and a - ret - -.data_191e - db $1 - db $2 - db $4 - -.asm_1921 - ld hl, $0006 - add hl, bc - ld d, [hl] - ld hl, $0007 - add hl, bc - ld e, [hl] - ld hl, hHours - ld a, d - cp e - jr z, .asm_1949 - jr c, .asm_193f - ld a, [hl] - cp d - jr nc, .asm_1949 - cp e - jr c, .asm_1949 - jr z, .asm_1949 - jr .asm_194b - -.asm_193f - ld a, e - cp [hl] - jr c, .asm_194b - ld a, [hl] - cp d - jr nc, .asm_1949 - jr .asm_194b - -.asm_1949 - and a - ret - -.asm_194b - scf - ret -; 194d - -Function194d: ; 194d - ld [hConnectionStripLength], a - call GetMapObject - call $40e7 - ret -; 1956 - - - -Function1956: ; 1956 - ld [hConnectionStripLength], a - call Function271e - ld a, [hConnectionStripLength] - call GetMapObject - ld a, $2 - ld hl, $40e7 - rst FarCall - ret -; 1967 - -Function1967: ; 1967 - ld [hConnectionStripLength], a - call GetMapObject - ld hl, $0000 - add hl, bc - ld a, [hl] - cp $ff - ret z - ld [hl], $ff - push af - call Function1985 - pop af - call Function1ae5 - callba Function4357 - ret -; 1985 - -Function1985: ; 1985 - ld hl, $d4cd - cp [hl] - jr z, .asm_1990 - ld hl, $d4ce - cp [hl] - ret nz - -.asm_1990 - callba Function581f - ld a, $ff - ld [$d4cd], a - ld [$d4ce], a - ret -; 199f - -Function199f: ; 199f - call Function1967 - call Function2712 - ret -; 19a6 - -Function19a6: ; 19a6 - push hl - call GetMapObject - ld d, b - ld e, c - ld a, $ff - ld [de], a - inc de - pop hl - ld bc, $000f - call CopyBytes - ret -; 19b8 - -Function19b8: ; 19b8 - call GetMapObject - ld hl, $0000 - add hl, bc - ld a, [hl] - push af - ld [hl], $ff - inc hl - ld bc, $000f - xor a - call ByteFill - pop af - cp $ff - ret z - cp $d - ret nc - ld b, a - ld a, [$d4cd] - cp b - jr nz, .asm_19de - ld a, $ff - ld [$d4cd], a - -.asm_19de - ld a, b - call Function1ae5 - callba Function4357 - ret -; 19e9 - - - -Function19e9: ; 19e9 - ld [$c2e2], a - ld a, [hROMBank] - ld [$c2e3], a - ld a, l - ld [$c2e4], a - ld a, h - ld [$c2e5], a - ld a, [$c2e2] - call Function18de - ret c - ld hl, $0003 - add hl, bc - ld [hl], $14 - ld hl, $0009 - add hl, bc - ld [hl], $0 - ld hl, VramState - set 7, [hl] - and a - ret -; 1a13 - - - -Function1a13: ; 1a13 - push bc - push de - ld hl, $d4d6 - ld de, $0028 - ld c, $d -.asm_1a1d - ld a, [hl] - and a - jr z, .asm_1a28 - add hl, de - dec c - jr nz, .asm_1a1d - xor a - jr .asm_1a2c - -.asm_1a28 - ld a, $d - sub c - scf - -.asm_1a2c - pop de - pop bc - ret -; 1a2f - - - -Function1a2f: ; 1a2f - ld hl, $0003 - add hl, bc - ld a, [hl] - cp $25 - jr c, .asm_1a39 - xor a - -.asm_1a39 - ld hl, Data4273 - ld e, a - ld d, 0 - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - ld a, [hl] - ret -; 1a47 - -Function1a47: ; 1a47 - push bc - push de - ld e, a - ld d, 0 - ld hl, Data4273 + 1 - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - ld a, BANK(Data4273) - call GetFarByte - add a - add a - and $c - pop de - pop bc - ret -; 1a61 - - -Function1a61: ; 1a61 - ld l, a - ld a, [hROMBank] - push af - ld a, BANK(Data4273) - rst Bankswitch - ld a, l - push bc - - call Function1a71 - - pop bc - pop af - rst Bankswitch - - ret -; 1a71 - -Function1a71: ; 1a71 - ld hl, $0003 - add hl, de - ld [hl], a - push de - ld e, a - ld d, 0 - ld hl, Data4273 + 1 - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - add hl, de - ld b, h - ld c, l - pop de - ld a, [bc] - inc bc - rlca - rlca - and $c - ld hl, $0008 - add hl, de - ld [hl], a - ld a, [bc] - inc bc - ld hl, $000b - add hl, de - ld [hl], a - ld a, [bc] - inc bc - ld hl, $0004 - add hl, de - ld [hl], a - ld a, [bc] - inc bc - ld hl, $0005 - add hl, de - ld [hl], a - ld a, [bc] - inc bc - ld hl, $0006 - add hl, de - ld [hl], a - ret -; 1aae - -Function1aae: ; 1aae - ld a, [hROMBank] - push af - ld a, [hli] - rst Bankswitch - - ld a, [hli] - ld d, [hl] - ld hl, $001b - add hl, bc - add [hl] - ld e, a - ld a, d - adc $0 - ld d, a - inc [hl] - ld a, [de] - ld h, a - pop af - rst Bankswitch - - ld a, h - ret -; 1ac6 - -Function1ac6: ; 1ac6 - ld hl, VramState - set 0, [hl] - ret -; 1acc - -Function1acc: ; 1acc - ld hl, VramState - res 0, [hl] - ret -; 1ad2 - - -Function1ad2: ; 1ad2 - ld a, [VramState] - bit 0, a - ret z - callba Function55e0 - callba Function5920 - ret -; 1ae5 - - -Function1ae5: ; 1ae5 - ld bc, $0028 - ld hl, $d4d6 - call AddNTimes - ld b, h - ld c, l - ret -; 1af1 - -Function1af1: ; 1af1 - ld hl, $0000 - add hl, bc - ld a, [hl] - and a - ret -; 1af8 - -Function1af8: ; 1af8 - push af - ld hl, $0008 - add hl, bc - ld a, [hl] - and $f3 - ld e, a - pop af - and $c - or e - ld [hl], a - ret -; 1b07 - - -GetSpriteDirection: ; 1b07 - ld hl, $0008 - add hl, bc - ld a, [hl] - and $c - ret -; 1b0f - diff --git a/engine/menu.asm b/engine/menu.asm deleted file mode 100644 index c761a927c..000000000 --- a/engine/menu.asm +++ /dev/null @@ -1,603 +0,0 @@ -; Functions used in displaying and handling menus. - - -LoadMenuDataHeader: ; 0x1d35 - call Function1d3c - call Function1c00 - ret - -Function1d3c: ; 0x1d3c - ld de, $cf81 - ld bc, $0010 - call CopyBytes - ld a, [hROMBank] - ld [$cf8a], a - ret -; 0x1d4b - -Function1d4b: ; 1d4b - ld [$cf88], a - ret -; 1d4f - - -Function1d4f: ; 1d4f - push hl - call Function1d58 - pop hl - jp PrintText -; 1d57 - -Function1d57: ; 1d57 - ret -; 1d58 - -Function1d58: ; 1d58 - ld hl, MenuDataHeader_0x1d5f - call LoadMenuDataHeader - ret -; 1d5f - -MenuDataHeader_0x1d5f: ; 1d5f - db $40 ; tile backup - db 12, 0 ; start coords - db 17, 19 ; end coords - dw VTiles0 - db 0 ; default option -; 1d67 - -Function1d67: ; 1d67 - call Function1d4f - call Function1c17 - ret -; 1d6e - -Function1d6e: ; 1d6e - ld hl, MenuDataHeader_0x1d75 - call LoadMenuDataHeader - ret -; 1d75 - -MenuDataHeader_0x1d75: ; 1d75 - db $40 ; tile backup - db 0, 0 ; start coords - db 17, 19 ; end coords - dw $0000 - db 1 ; default option -; 1d7d - -Function1d7d: ; 1d7d - call Function1c07 - ret -; 1d81 - -Function1d81: ; 0x1d81 - xor a - ld [hBGMapMode], a - call Function1cbb - call Function1ad2 - call Function1c89 - call Function321c - call Function1c66 - ld a, [$cf91] - bit 7, a - jr z, .asm_1da7 ; 0x1d98 $d - call Function1c10 - call Function1bc9 - call Function1ff8 - bit 1, a - jr z, .asm_1da9 ; 0x1da5 $2 -.asm_1da7 - scf - ret -.asm_1da9 - and a - ret -; 0x1dab - -Function1dab: ; 1dab - call LoadMenuDataHeader - call Function1d81 - call Function1c17 - ld a, [$cfa9] - ret -; 1db8 - -Function1db8: ; 0x1db8 - push hl - push bc - push af - ld hl, $cf86 - ld a, [hli] - ld h, [hl] - ld l, a - inc hl - inc hl - pop af - call GetNthString - ld d, h - ld e, l - call CopyName1 - pop bc - pop hl - ret -; 0x1dcf - - -Function1dcf: ; 1dcf - ld bc, $0e07 - -Function1dd2: ; 1dd2 - jr Function1dd9 - -Function1dd4: ; 1dd4 - call LoadMenuDataHeader - jr Function1dfe - -Function1dd9: ; 1dd9 - push bc - ld hl, MenuDataHeader_0x1e1d - call Function1d3c - pop bc - ld a, b - cp $e - jr nz, .asm_1de9 - ld a, $e - ld b, a - -.asm_1de9 - ld a, b - ld [$cf83], a - add $5 - ld [$cf85], a - ld a, c - ld [$cf82], a - add $4 - ld [$cf84], a - call Function1c00 - -Function1dfe: ; 1dfe - call Function1d81 - push af - ld c, $f - call DelayFrames - call Function1c17 - pop af - jr c, .asm_1e16 - ld a, [$cfa9] - cp $2 - jr z, .asm_1e16 - and a - ret - -.asm_1e16 - ld a, $2 - ld [$cfa9], a - scf - ret -; 1e1d - -MenuDataHeader_0x1e1d: ; 1e1d - db $40 ; tile backup - db 5, 10 ; start coords - db 9, 15 ; end coords - dw MenuData2_0x1e25 - db 1 ; default option -; 1e25 - -MenuData2_0x1e25: ; 1e25 - db $c0 ; flags - db 2 - db "YES@" - db "NO@" -; 1e2e - -Function1e2e: ; 1e2e - call Function1e35 - call Function1c00 - ret -; 1e35 - -Function1e35: ; 1e35 - push de - call Function1d3c - pop de - ld a, [$cf83] - ld h, a - ld a, [$cf85] - sub h - ld h, a - ld a, d - ld [$cf83], a - add h - ld [$cf85], a - ld a, [$cf82] - ld l, a - ld a, [$cf84] - sub l - ld l, a - ld a, e - ld [$cf82], a - add l - ld [$cf84], a - ret -; 1e5d - -Function1e5d: ; 1e5d - call MenuFunc_1e7f - call MenuWriteText - call Function1eff - call Function1f23 - call Function1bdd - call Function1ff8 - ret -; 1e70 - -SetUpMenu: ; 1e70 - call MenuFunc_1e7f ; ??? - call MenuWriteText - call Function1eff ; set up selection pointer - ld hl, $cfa5 - set 7, [hl] - ret - -MenuFunc_1e7f: ; 0x1e7f - call Function1c66 - call Function1ebd - call Function1ea6 - call Function1cbb - ret - -MenuWriteText: ; 0x1e8c - xor a - ld [hBGMapMode], a - call Function1ebd ; sort out the text - call Function1eda ; actually write it - call Function2e31 - ld a, [hOAMUpdate] - push af - ld a, $1 - ld [hOAMUpdate], a - call Function321c - pop af - ld [hOAMUpdate], a - ret -; 0x1ea6 - -Function1ea6: ; 1ea6 - ld a, [$cf83] - ld c, a - ld a, [$cf85] - sub c - ld c, a - ld a, [$cf92] - add a - inc a - ld b, a - ld a, [$cf82] - add b - ld [$cf84], a - ret -; 1ebd - -Function1ebd: ; 1ebd - ld hl, $cf93 - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [$cf76] - and a - jr z, .asm_1ed3 - ld b, a - ld c, $ff -.asm_1ecc - ld a, [hli] - cp c - jr nz, .asm_1ecc - dec b - jr nz, .asm_1ecc - -.asm_1ed3 - ld d, h - ld e, l - ld a, [hl] - ld [$cf92], a - ret -; 1eda - -Function1eda: ; 1eda - call Function1cfd - ld bc, $002a - add hl, bc -.asm_1ee1 - inc de - ld a, [de] - cp $ff - ret z - ld [MenuSelection], a - push de - push hl - ld d, h - ld e, l - ld hl, $cf95 - call Function1efb - pop hl - ld de, $0028 - add hl, de - pop de - jr .asm_1ee1 -; 1efb - -Function1efb: ; 1efb - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 1eff - -Function1eff: ; 1eff - call Function1c10 - ld hl, $cfa8 - ld a, [$cf91] - bit 3, a - jr z, .asm_1f0e - set 3, [hl] - -.asm_1f0e - ld a, [$cf91] - bit 2, a - jr z, .asm_1f19 - set 5, [hl] - set 4, [hl] - -.asm_1f19 - ret -; 1f1a - - -Function1f1a: ; 1f1a - call Function1bd3 - ld hl, $cfa8 - and [hl] - jr Function1f2a -; 1f23 - -Function1f23: ; 1f23 - xor a - ld [$cf73], a - call Function1bc9 -; 1f2a - -Function1f2a: ; 1f2a - bit 0, a - jr nz, .asm_1f52 - bit 1, a - jr nz, .asm_1f6d - bit 3, a - jr nz, .asm_1f6d - bit 4, a - jr nz, .asm_1f44 - bit 5, a - jr nz, .asm_1f4b - xor a - ld [$cf73], a - jr .asm_1f57 - -.asm_1f44 - ld a, $10 - ld [$cf73], a - jr .asm_1f57 - -.asm_1f4b - ld a, $20 - ld [$cf73], a - jr .asm_1f57 - -.asm_1f52 - ld a, $1 - ld [$cf73], a - -.asm_1f57 - call Function1ebd - ld a, [$cfa9] - ld l, a - ld h, $0 - add hl, de - ld a, [hl] - ld [MenuSelection], a - ld a, [$cfa9] - ld [$cf88], a - and a - ret - -.asm_1f6d - ld a, $2 - ld [$cf73], a - ld a, $ff - ld [MenuSelection], a - scf - ret -; 1f79 - -Function1f79: ; 1f79 - push de - ld hl, $cf97 - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [MenuSelection] - call GetNthString - ld d, h - ld e, l - pop hl - call PlaceString - ret -; 1f8d - -Function1f8d: ; 1f8d - push de - ld a, [MenuSelection] - call Function1fb1 - inc hl - inc hl - ld a, [hli] - ld d, [hl] - ld e, a - pop hl - call PlaceString - ret -; 1f9e - -Function1f9e: ; 1f9e - call Function1fb1 - inc hl - inc hl - ld a, [hli] - ld d, [hl] - ld e, a - ret -; 1fa7 - -Function1fa7: ; 1fa7 - ld a, [MenuSelection] - call Function1fb1 - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] -; 1fb1 - -Function1fb1: ; 1fb1 - ld e, a - ld d, $0 - ld hl, $cf97 - ld a, [hli] - ld h, [hl] - ld l, a - add hl, de - add hl, de - add hl, de - add hl, de - ret -; 1fbf - -Function1fbf: ; 1fbf - ld hl, $cf71 - call Function1ff0 - ld hl, $cf81 - call Function1ff0 - ld hl, $cf91 - call Function1ff0 - ld hl, $cfa1 - call Function1ff0 - ld a, [rSVBK] - push af - ld a, $7 - ld [rSVBK], a - xor a - ld hl, $dfff - ld [hld], a - ld [hld], a - ld a, l - ld [$cf71], a - ld a, h - ld [$cf72], a - pop af - ld [rSVBK], a - ret -; 1ff0 - -Function1ff0: ; 1ff0 - ld bc, $0010 - xor a - call ByteFill - ret -; 1ff8 - -Function1ff8: ; 1ff8 - push af - and $3 - jr z, .asm_2007 - ld hl, $cf81 - bit 3, [hl] - jr nz, .asm_2007 - call PlayClickSFX - -.asm_2007 - pop af - ret -; 2009 - - -PlayClickSFX: ; 2009 - push de - ld de, SFX_READ_TEXT_2 - call StartSFX - pop de - ret -; 0x2012 - -Function2012: ; 2012 - call Function1d4f - call Functiona46 - call Function1c07 - ret -; 201c - -Function201c: ; 201c - ld [hBuffer], a - ld a, [hROMBank] - push af - ld a, [hBuffer] - rst Bankswitch - - call PlaceString - pop af - rst Bankswitch - - ret -; 202a - -Function202a: ; 202a - ld a, [hROMBank] - ld [$cf94], a - ld a, $9 - ld hl, $400e - rst FarCall - ld a, [$cf88] - ret -; 2039 - -Function2039: ; 2039 - ld a, [hROMBank] - ld [$cf94], a - ld a, $9 - ld hl, $4022 - rst FarCall - ld a, [$cf88] - ret -; 2048 - -Function2048: ; 2048 - ld a, [hROMBank] - ld [$cf94], a - ld a, $9 - ld hl, $403c - rst FarCall - ld a, [$cf88] - ret -; 2057 - -Function2057: ; 2057 - ld a, [hROMBank] - push af - ld a, $21 - rst Bankswitch - - call $42db - pop af - rst Bankswitch - - ret -; 2063 - diff --git a/engine/palettes.asm b/engine/palettes.asm deleted file mode 100644 index accaa96b5..000000000 --- a/engine/palettes.asm +++ /dev/null @@ -1,347 +0,0 @@ -; Functions dealing with palettes. - - -UpdatePalsIfCGB: ; c2f -; update bgp data from BGPals -; update obp data from OBPals -; return carry if successful - -; check cgb - ld a, [hCGB] - and a - ret z - - -UpdateCGBPals: ; c33 -; return carry if successful -; any pals to update? - ld a, [hCGBPalUpdate] - and a - ret z - - -ForceUpdateCGBPals: ; c37 - - ld a, [rSVBK] - push af - ld a, 5 ; BANK(BGPals) - ld [rSVBK], a - - ld hl, BGPals ; 5:d080 - -; copy 8 pals to bgpd - ld a, %10000000 ; auto increment, index 0 - ld [rBGPI], a - ld c, rBGPD % $100 - ld b, 4 ; NUM_PALS / 2 -.bgp - rept $10 - ld a, [hli] - ld [$ff00+c], a - endr - - dec b - jr nz, .bgp - -; hl is now 5:d0c0 OBPals - -; copy 8 pals to obpd - ld a, %10000000 ; auto increment, index 0 - ld [rOBPI], a - ld c, rOBPD - rJOYP - ld b, 4 ; NUM_PALS / 2 -.obp - rept $10 - ld a, [hli] - ld [$ff00+c], a - endr - - dec b - jr nz, .obp - - pop af - ld [rSVBK], a - -; clear pal update queue - xor a - ld [hCGBPalUpdate], a - - scf - ret -; c9f - - -DmgToCgbBGPals: ; c9f -; exists to forego reinserting cgb-converted image data - -; input: a -> bgp - - ld [rBGP], a - push af - - ld a, [hCGB] - and a - jr z, .end - - push hl - push de - push bc - ld a, [rSVBK] - push af - - ld a, 5 - ld [rSVBK], a - -; copy & reorder bg pal buffer - ld hl, BGPals ; to - ld de, Unkn1Pals ; from -; order - ld a, [rBGP] - ld b, a -; all pals - ld c, 8 - call CopyPals -; request pal update - ld a, 1 - ld [hCGBPalUpdate], a - - pop af - ld [rSVBK], a - pop bc - pop de - pop hl -.end - pop af - ret -; ccb - - -DmgToCgbObjPals: ; ccb -; exists to forego reinserting cgb-converted image data - -; input: d -> obp1 -; e -> obp2 - - ld a, e - ld [rOBP0], a - ld a, d - ld [rOBP1], a - - ld a, [hCGB] - and a - ret z - - push hl - push de - push bc - ld a, [rSVBK] - push af - - ld a, 5 - ld [rSVBK], a - -; copy & reorder obj pal buffer - ld hl, OBPals ; to - ld de, Unkn2Pals ; from -; order - ld a, [rOBP0] - ld b, a -; all pals - ld c, 8 - call CopyPals -; request pal update - ld a, 1 - ld [hCGBPalUpdate], a - - pop af - ld [rSVBK], a - pop bc - pop de - pop hl - ret -; cf8 - - -Functioncf8: ; cf8 - ld [rOBP0], a - push af - ld a, [hCGB] - and a - jr z, .asm_d22 - push hl - push de - push bc - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, $d0c0 - ld de, MartPointer - ld a, [rOBP0] - ld b, a - ld c, $1 - call CopyPals - ld a, $1 - ld [hCGBPalUpdate], a - pop af - ld [rSVBK], a - pop bc - pop de - pop hl - -.asm_d22 - pop af - ret -; d24 - -Functiond24: ; d24 - ld [rOBP1], a - push af - ld a, [hCGB] - and a - jr z, .asm_d4e - push hl - push de - push bc - ld a, [rSVBK] - push af - ld a, $5 - ld [rSVBK], a - ld hl, $d0c8 - ld de, $d048 - ld a, [rOBP1] - ld b, a - ld c, $1 - call CopyPals - ld a, $1 - ld [hCGBPalUpdate], a - pop af - ld [rSVBK], a - pop bc - pop de - pop hl - -.asm_d4e - pop af - ret -; d50 - - - -CopyPals: ; d50 -; copy c palettes in order b from de to hl - - push bc - ld c, 4 ; NUM_PAL_COLORS -.loop - push de - push hl - -; get pal color - ld a, b - and %11 ; color -; 2 bytes per color - add a - ld l, a - ld h, 0 - add hl, de - ld e, [hl] - inc hl - ld d, [hl] - -; dest - pop hl -; write color - ld [hl], e - inc hl - ld [hl], d - inc hl -; next pal color - srl b - srl b -; source - pop de -; done pal? - dec c - jr nz, .loop - -; de += 8 (next pal) - ld a, 8 ; NUM_PAL_COLORS * 2 ; bytes per pal - add e - jr nc, .ok - inc d -.ok - ld e, a - -; how many more pals? - pop bc - dec c - jr nz, CopyPals - ret -; d79 - - -Functiond79: ; d79 - ld a, [hCGB] - and a - ret z - ld a, 1 - ld [rVBK], a - ld hl, VTiles0 - ld bc, $2000 - xor a - call ByteFill - ld a, 0 - ld [rVBK], a - ret -; d90 - - -Functiond90: ; d90 - ret -; d91 - - -Functiond91: ; d91 - ld a, [hCGB] - and a - ret z - ld a, [rSVBK] - push af - ld a, 5 ; BANK(BGPals) - ld [rSVBK], a - ld hl, BGPals - ld bc, $40 + $10 - xor a - call ByteFill - pop af - ld [rSVBK], a - ld a, 1 - ld [hCGBPalUpdate], a - call DelayFrame - ret -; db1 - - -Functiondb1: ; db1 - ld a, [hROMBank] - push af - ld a, BANK(Function4c000) - rst Bankswitch - call Function4c000 - pop af - rst Bankswitch - ret -; dbd - -Functiondbd: ; dbd - ld a, [hROMBank] - push af - ld a, BANK(Function4c03f) - rst Bankswitch - call Function4c03f - pop af - rst Bankswitch - ret -; dc9 - diff --git a/engine/rtc.asm b/engine/rtc.asm deleted file mode 100644 index 91428d03b..000000000 --- a/engine/rtc.asm +++ /dev/null @@ -1,25 +0,0 @@ -RTC: ; 46f -; update time and time-sensitive palettes - -; rtc enabled? - ld a, [$c2ce] - cp 0 - ret z - - call UpdateTime - -; obj update on? - ld a, [VramState] - bit 0, a ; obj update - ret z - -TimeOfDayPals: ; 47e - callab _TimeOfDayPals - ret -; 485 - -UpdateTimePals: ; 485 - callab _UpdateTimePals - ret -; 48c - diff --git a/engine/scripting.asm b/engine/scripting.asm index e8921a265..12fd14283 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -539,7 +539,7 @@ Script_verbosegiveitem2: ; 0x96f8e ld a, [de] ld [$d10c], a ld hl, $d892 - call Function2f66 + call ReceiveItem ld a, $1 jr c, .asm_96fb0 ; 0x96fad $1 xor a @@ -2320,7 +2320,7 @@ Script_giveitem: ; 0x977ca call GetScriptByte ld [$d10c], a ld hl, $d892 - call Function2f66 + call ReceiveItem jr nc, .asm_977eb ; 0x977e3 $6 ld a, $1 ld [$c2dd], a @@ -2346,7 +2346,7 @@ Script_takeitem: ; 0x977f0 ld a, $ff ld [$d107], a ld hl, $d892 - call Function2f53 + call TossItem ret nc ld a, $1 ld [$c2dd], a @@ -2363,7 +2363,7 @@ Script_checkitem: ; 0x97812 call GetScriptByte ld [$d106], a ld hl, $d892 - call PickUpItem + call CheckItem ret nc ld a, $1 ld [$c2dd], a diff --git a/engine/serial.asm b/engine/serial.asm deleted file mode 100644 index fca9d82c3..000000000 --- a/engine/serial.asm +++ /dev/null @@ -1,408 +0,0 @@ -Serial: ; 6ef -; The serial interrupt. - - push af - push bc - push de - push hl - - ld a, [$ffc9] - and a - jr nz, .asm_71c - - ld a, [$c2d4] - bit 0, a - jr nz, .asm_721 - - ld a, [$ffcb] - inc a - jr z, .asm_726 - - ld a, [rSB] - ld [hSerialReceive], a - - ld a, [hSerialSend] - ld [rSB], a - - ld a, [$ffcb] - cp $2 - jr z, .asm_752 - - ld a, 0 << rSC_ON - ld [rSC], a - ld a, 1 << rSC_ON - ld [rSC], a - jr .asm_752 - -.asm_71c - call Function3e80 - jr .asm_75a - -.asm_721 - call Function2057 - jr .asm_75a - -.asm_726 - ld a, [rSB] - cp $1 - jr z, .asm_730 - cp $2 - jr nz, .asm_752 - -.asm_730 - ld [hSerialReceive], a - ld [$ffcb], a - cp $2 - jr z, .asm_74f - - xor a - ld [rSB], a - ld a, $3 - ld [rDIV], a - -.asm_73f - ld a, [rDIV] - bit 7, a - jr nz, .asm_73f - - ld a, 0 << rSC_ON - ld [rSC], a - ld a, 1 << rSC_ON - ld [rSC], a - jr .asm_752 - -.asm_74f - xor a - ld [rSB], a - -.asm_752 - ld a, $1 - ld [$ffca], a - ld a, $fe - ld [hSerialSend], a - -.asm_75a - pop hl - pop de - pop bc - pop af - reti -; 75f - -Function75f: ; 75f - ld a, $1 - ld [$ffcc], a -.asm_763 - ld a, [hl] - ld [hSerialSend], a - call Function78a - push bc - ld b, a - inc hl - ld a, $30 -.asm_76e - dec a - jr nz, .asm_76e - ld a, [$ffcc] - and a - ld a, b - pop bc - jr z, .asm_782 - dec hl - cp $fd - jr nz, .asm_763 - xor a - ld [$ffcc], a - jr .asm_763 - -.asm_782 - ld [de], a - inc de - dec bc - ld a, b - or c - jr nz, .asm_763 - ret -; 78a - -Function78a: ; 78a - xor a - ld [$ffca], a - ld a, [$ffcb] - cp $2 - jr nz, .asm_79b - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a - -.asm_79b - ld a, [$ffca] - and a - jr nz, .asm_7e5 - ld a, [$ffcb] - cp $1 - jr nz, .asm_7c0 - call Function82b - jr z, .asm_7c0 - call .asm_825 - push hl - ld hl, $cf5c - inc [hl] - jr nz, .asm_7b7 - dec hl - inc [hl] - -.asm_7b7 - pop hl - call Function82b - jr nz, .asm_79b - jp Function833 - -.asm_7c0 - ld a, [rIE] - and $f - cp $8 - jr nz, .asm_79b - ld a, [$cf5d] - dec a - ld [$cf5d], a - jr nz, .asm_79b - ld a, [$cf5e] - dec a - ld [$cf5e], a - jr nz, .asm_79b - ld a, [$ffcb] - cp $1 - jr z, .asm_7e5 - ld a, $ff -.asm_7e2 - dec a - jr nz, .asm_7e2 - -.asm_7e5 - xor a - ld [$ffca], a - ld a, [rIE] - and $f - sub $8 - jr nz, .asm_7f8 - ld [$cf5d], a - ld a, $50 - ld [$cf5e], a - -.asm_7f8 - ld a, [hSerialReceive] - cp $fe - ret nz - call Function82b - jr z, .asm_813 - push hl - ld hl, $cf5c - ld a, [hl] - dec a - ld [hld], a - inc a - jr nz, .asm_80d - dec [hl] - -.asm_80d - pop hl - call Function82b - jr z, Function833 - -.asm_813 - ld a, [rIE] - and $f - cp $8 - ld a, $fe - ret z - ld a, [hl] - ld [hSerialSend], a - call DelayFrame - jp Function78a - -.asm_825 - ld a, $f -.asm_827 - dec a - jr nz, .asm_827 - ret -; 82b - -Function82b: ; 82b - push hl - ld hl, $cf5b - ld a, [hli] - or [hl] - pop hl - ret -; 833 - -Function833: ; 833 - dec a - ld [$cf5b], a - ld [$cf5c], a - ret -; 83b - -Function83b: ; 83b - ld hl, $cf56 - ld de, $cf51 - ld c, $2 - ld a, $1 - ld [$ffcc], a -.asm_847 - call DelayFrame - ld a, [hl] - ld [hSerialSend], a - call Function78a - ld b, a - inc hl - ld a, [$ffcc] - and a - ld a, $0 - ld [$ffcc], a - jr nz, .asm_847 - ld a, b - ld [de], a - inc de - dec c - jr nz, .asm_847 - ret -; 862 - -Function862: ; 862 - call Function309d - callab Function4000 - call Function87d - jp Function30b4 -; 871 - - -Function871: ; 871 - call Function309d - callab Function4000 - jp Function87d -; 87d - - - -Function87d: ; 87d - ld a, $ff - ld [$cf52], a -.asm_882 - call Function8c1 - call DelayFrame - call Function82b - jr z, .asm_89e - push hl - ld hl, $cf5c - dec [hl] - jr nz, .asm_89d - dec hl - dec [hl] - jr nz, .asm_89d - pop hl - xor a - jp Function833 - -.asm_89d - pop hl - -.asm_89e - ld a, [$cf52] - inc a - jr z, .asm_882 - ld b, $a -.asm_8a6 - call DelayFrame - call Function8c1 - dec b - jr nz, .asm_8a6 - ld b, $a -.asm_8b1 - call DelayFrame - call Function908 - dec b - jr nz, .asm_8b1 - ld a, [$cf52] - ld [$cf51], a - ret -; 8c1 - -Function8c1: ; 8c1 - push bc - ld b, $60 - ld a, [InLinkBattle] - cp $1 - jr z, .asm_8d7 - ld b, $60 - jr c, .asm_8d7 - cp $2 - ld b, $70 - jr z, .asm_8d7 - ld b, $80 - -.asm_8d7 - call Function8f3 - ld a, [$cf56] - add b - ld [hSerialSend], a - ld a, [$ffcb] - cp $2 - jr nz, .asm_8ee - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a - -.asm_8ee - call Function8f3 - pop bc - ret -; 8f3 - -Function8f3: ; 8f3 - ld a, [hSerialReceive] - ld [$cf51], a - and $f0 - cp b - ret nz - xor a - ld [hSerialReceive], a - ld a, [$cf51] - and $f - ld [$cf52], a - ret -; 908 - -Function908: ; 908 - xor a - ld [hSerialSend], a - ld a, [$ffcb] - cp $2 - ret nz - ld a, $1 - ld [rSC], a - ld a, $81 - ld [rSC], a - ret -; 919 - -Function919: ; 919 - ld a, [InLinkBattle] - and a - ret nz - ld a, $2 - ld [rSB], a - xor a - ld [hSerialReceive], a - ld a, $0 - ld [rSC], a - ld a, $80 - ld [rSC], a - ret -; 92e - - diff --git a/engine/sine.asm b/engine/sine.asm deleted file mode 100644 index 09d06ca89..000000000 --- a/engine/sine.asm +++ /dev/null @@ -1,22 +0,0 @@ -Cosine: ; 1b0f -; Return d * cos(a) in hl - add $10 ; 90 degrees - -Sine: ; 1b11 -; Return d * sin(a) in hl -; a is a signed 6-bit value. - - ld e, a - - ld a, [hROMBank] - push af - ld a, BANK(_Sine) - rst Bankswitch - - call _Sine - - pop af - rst Bankswitch - ret -; 1b1e - diff --git a/engine/std_scripts.asm b/engine/std_scripts.asm new file mode 100644 index 000000000..095013d1d --- /dev/null +++ b/engine/std_scripts.asm @@ -0,0 +1,2619 @@ +StdScripts: ; bc000 + dbw BANK(PokeCenterNurseScript), PokeCenterNurseScript + dbw BANK(UnknownScript_0xbc162), UnknownScript_0xbc162 + dbw BANK(UnknownScript_0xbc166), UnknownScript_0xbc166 + dbw BANK(UnknownScript_0xbc16a), UnknownScript_0xbc16a + dbw BANK(UnknownScript_0xbc16e), UnknownScript_0xbc16e + dbw BANK(UnknownScript_0xbc172), UnknownScript_0xbc172 + dbw BANK(UnknownScript_0xbc176), UnknownScript_0xbc176 + dbw BANK(UnknownScript_0xbc17a), UnknownScript_0xbc17a + dbw BANK(UnknownScript_0xbc185), UnknownScript_0xbc185 + dbw BANK(UnknownScript_0xbc189), UnknownScript_0xbc189 + dbw BANK(UnknownScript_0xbc191), UnknownScript_0xbc191 + dbw BANK(UnknownScript_0xbc195), UnknownScript_0xbc195 + dbw BANK(UnknownScript_0xbc19d), UnknownScript_0xbc19d + dbw BANK(UnknownScript_0xbc1a5), UnknownScript_0xbc1a5 + dbw BANK(UnknownScript_0xbc1b8), UnknownScript_0xbc1b8 + dbw BANK(UnknownScript_0xbc1bc), UnknownScript_0xbc1bc + dbw BANK(UnknownScript_0xbc1c0), UnknownScript_0xbc1c0 + dbw BANK(UnknownScript_0xbc1c4), UnknownScript_0xbc1c4 + dbw BANK(UnknownScript_0xbc23e), UnknownScript_0xbc23e + dbw BANK(UnknownScript_0xbc242), UnknownScript_0xbc242 + dbw BANK(UnknownScript_0xbc1af), UnknownScript_0xbc1af + dbw BANK(UnknownScript_0xbc1c8), UnknownScript_0xbc1c8 + dbw BANK(UnknownScript_0xbc25c), UnknownScript_0xbc25c + dbw BANK(UnknownScript_0xbc274), UnknownScript_0xbc274 + dbw BANK(UnknownScript_0xbc3db), UnknownScript_0xbc3db + dbw BANK(UnknownScript_0xbc574), UnknownScript_0xbc574 + dbw BANK(UnknownScript_0xbc62d), UnknownScript_0xbc62d + dbw BANK(UnknownScript_0xbc6e6), UnknownScript_0xbc6e6 + dbw BANK(UnknownScript_0xbc6f0), UnknownScript_0xbc6f0 + dbw BANK(UnknownScript_0xbc7ce), UnknownScript_0xbc7ce + dbw BANK(UnknownScript_0xbc8ac), UnknownScript_0xbc8ac + dbw BANK(UnknownScript_0xbc98a), UnknownScript_0xbc98a + dbw BANK(UnknownScript_0xbca47), UnknownScript_0xbca47 + dbw BANK(UnknownScript_0xbca8f), UnknownScript_0xbca8f + dbw BANK(UnknownScript_0xbcb0a), UnknownScript_0xbcb0a + dbw BANK(UnknownScript_0xbcb35), UnknownScript_0xbcb35 + dbw BANK(UnknownScript_0xbcb7f), UnknownScript_0xbcb7f + dbw BANK(UnknownScript_0xbcbc9), UnknownScript_0xbcbc9 + dbw BANK(UnknownScript_0xbcbd3), UnknownScript_0xbcbd3 + dbw BANK(UnknownScript_0xbcc2d), UnknownScript_0xbcc2d + dbw BANK(UnknownScript_0xbcc87), UnknownScript_0xbcc87 + dbw BANK(UnknownScript_0xbcce1), UnknownScript_0xbcce1 + dbw BANK(UnknownScript_0xbcd30), UnknownScript_0xbcd30 + dbw BANK(UnknownScript_0xbcd5a), UnknownScript_0xbcd5a + dbw BANK(UnknownScript_0xbcd93), UnknownScript_0xbcd93 + dbw BANK(UnknownScript_0xbcda0), UnknownScript_0xbcda0 + dbw BANK(UnknownScript_0xbcdaa), UnknownScript_0xbcdaa + dbw BANK(UnknownScript_0xbcdb9), UnknownScript_0xbcdb9 + dbw BANK(UnknownScript_0xbcdc3), UnknownScript_0xbcdc3 + dbw BANK(UnknownScript_0xbc1a9), UnknownScript_0xbc1a9 + dbw BANK(UnknownScript_0xbcdcd), UnknownScript_0xbcdcd + dbw BANK(UnknownScript_0xbce7f), UnknownScript_0xbce7f +; bc09c + +PokeCenterNurseScript: ; bc09c +; Talking to a nurse in a Pokemon Center + + loadfont +; The nurse has different text for: +; Morn + checktime $1 + iftrue .morn +; Day + checktime $2 + iftrue .day +; Nite + checktime $4 + iftrue .nite +; If somehow it's not a time of day at all, we skip the introduction + 2jump .heal + +.morn +; Different text if we're in the com center + checkbit1 $032a + iftrue .morn_comcenter +; Good morning! Welcome to ... + 3writetext BANK(UnknownText_0x1b0000), UnknownText_0x1b0000 + keeptextopen + 2jump .heal +.morn_comcenter +; Good morning! This is the ... + 3writetext BANK(UnknownText_0x1b008a), UnknownText_0x1b008a + keeptextopen + 2jump .heal + +.day +; Different text if we're in the com center + checkbit1 $032a + iftrue .day_comcenter +; Hello! Welcome to ... + 3writetext BANK(UnknownText_0x1b002b), UnknownText_0x1b002b + keeptextopen + 2jump .heal +.day_comcenter +; Hello! This is the ... + 3writetext BANK(UnknownText_0x1b00d6), UnknownText_0x1b00d6 + keeptextopen + 2jump .heal + +.nite +; Different text if we're in the com center + checkbit1 $032a + iftrue .nite_comcenter +; Good evening! You're out late. ... + 3writetext BANK(UnknownText_0x1b004f), UnknownText_0x1b004f + keeptextopen + 2jump .heal +.nite_comcenter +; Good to see you working so late. ... + 3writetext BANK(UnknownText_0x1b011b), UnknownText_0x1b011b + keeptextopen + 2jump .heal + +.heal +; If we come back, don't welcome us to the com center again + clearbit1 $032a +; Ask if you want to heal + 3writetext BANK(UnknownText_0x1b017a), UnknownText_0x1b017a + yesorno + iffalse .end +; Go ahead and heal + 3writetext BANK(UnknownText_0x1b01bd), UnknownText_0x1b01bd + pause 20 + special $009d +; Turn to the machine + spriteface $fe, $2 + pause 10 + special $001b + playmusic $0000 + writebyte $0 + special $003e + pause 30 + special $003d + spriteface $fe, $0 + pause 10 +; Has Elm already phoned you about Pokerus? + checkphonecall + iftrue .done +; Has Pokerus already been found in the Pokecenter? + checkbit2 $000d + iftrue .done +; Check for Pokerus + special $004e ; SPECIAL_CHECKPOKERUS + iftrue .pokerus +.done +; Thank you for waiting. ... + 3writetext BANK(UnknownText_0x1b01d7), UnknownText_0x1b01d7 + pause 20 +.end +; We hope to see you again. + 3writetext BANK(UnknownText_0x1b020b), UnknownText_0x1b020b +; Curtsy + spriteface $fe, $1 + pause 10 + spriteface $fe, $0 + pause 10 +; And we're out + closetext + loadmovesprites + end + +.pokerus +; Different text for com center (excludes 'in a Pokemon Center') +; Since flag $32a is cleared when healing, +; this text is never actually seen + checkbit1 $032a + iftrue .pokerus_comcenter +; Your Pokemon appear to be infected ... + 3writetext BANK(UnknownText_0x1b0241), UnknownText_0x1b0241 + closetext + loadmovesprites + 2jump .endpokerus +.pokerus_comcenter +; Your Pokemon appear to be infected ... + 3writetext BANK(UnknownText_0x1b02d6), UnknownText_0x1b02d6 + closetext + loadmovesprites +.endpokerus +; Don't tell us about Pokerus again + setbit2 $000d +; Trigger Elm's Pokerus phone call + specialphonecall $0001 + end +; bc162 + +UnknownScript_0xbc162: ; 0xbc162 + 3jumptext $6c, $435a +; 0xbc166 + +UnknownScript_0xbc166: ; 0xbc166 + 3jumptext $6c, $4378 +; 0xbc16a + +UnknownScript_0xbc16a: ; 0xbc16a + 3jumptext $6c, $43a3 +; 0xbc16e + +UnknownScript_0xbc16e: ; 0xbc16e + 3jumptext $6c, $43d9 +; 0xbc172 + +UnknownScript_0xbc172: ; 0xbc172 + 3jumptext $6c, $4448 +; 0xbc176 + +UnknownScript_0xbc176: ; 0xbc176 + 3jumptext $6c, $4472 +; 0xbc17a + +UnknownScript_0xbc17a: ; 0xbc17a + loadfont + 3writetext $6c, $448d + closetext + special $0026 + loadmovesprites + end +; 0xbc185 + +UnknownScript_0xbc185: ; 0xbc185 + 3jumptext $6c, $44a0 +; 0xbc189 + +UnknownScript_0xbc189: ; 0xbc189 + loadfont + 3writetext $6c, $44be + closetext + loadmovesprites + end +; 0xbc191 + +UnknownScript_0xbc191: ; 0xbc191 + 3jumptext $6c, $44c9 +; 0xbc195 + +UnknownScript_0xbc195: ; 0xbc195 + loadfont + writebyte $0 + special $0028 + loadmovesprites + end +; 0xbc19d + +UnknownScript_0xbc19d: ; 0xbc19d + loadfont + writebyte $4 + special $0028 + loadmovesprites + end +; 0xbc1a5 + +UnknownScript_0xbc1a5: ; 0xbc1a5 + 3jumptext $6c, $4526 +; 0xbc1a9 + +UnknownScript_0xbc1a9: ; 0xbc1a9 + loadfont + special $001c + loadmovesprites + end +; 0xbc1af + +UnknownScript_0xbc1af: ; 0xbc1af + playsound $0008 + pause 15 + playsound $0027 + end +; 0xbc1b8 + +UnknownScript_0xbc1b8: ; 0xbc1b8 + 3jump BANK(UnknownScript_0xcd4b), UnknownScript_0xcd4b +; 0xbc1bc + +UnknownScript_0xbc1bc: ; 0xbc1bc + 3jump BANK(UnknownScript_0xcf5d), UnknownScript_0xcf5d +; 0xbc1c0 + +UnknownScript_0xbc1c0: ; 0xbc1c0 + 3jumptext $6c, $457f +; 0xbc1c4 + +UnknownScript_0xbc1c4: ; 0xbc1c4 + 3jumptext $6c, $459c +; 0xbc1c8 + +UnknownScript_0xbc1c8: ; 0xbc1c8 + checkcode $b + if_equal $1, UnknownScript_0xbc1e7 + if_equal $2, UnknownScript_0xbc1ec + if_equal $3, UnknownScript_0xbc1f1 + if_equal $4, UnknownScript_0xbc1f6 + if_equal $5, UnknownScript_0xbc1fb + if_equal $6, UnknownScript_0xbc200 + stringtotext UnknownRawText_0xbc205, $0 + end +; 0xbc1e7 + +UnknownScript_0xbc1e7: ; 0xbc1e7 + stringtotext UnknownRawText_0xbc20c, $0 + end +; 0xbc1ec + +UnknownScript_0xbc1ec: ; 0xbc1ec + stringtotext UnknownRawText_0xbc213, $0 + end +; 0xbc1f1 + +UnknownScript_0xbc1f1: ; 0xbc1f1 + stringtotext UnknownRawText_0xbc21b, $0 + end +; 0xbc1f6 + +UnknownScript_0xbc1f6: ; 0xbc1f6 + stringtotext UnknownRawText_0xbc225, $0 + end +; 0xbc1fb + +UnknownScript_0xbc1fb: ; 0xbc1fb + stringtotext UnknownRawText_0xbc22e, $0 + end +; 0xbc200 + +UnknownScript_0xbc200: ; 0xbc200 + stringtotext UnknownRawText_0xbc235, $0 + end +; 0xbc205 + +UnknownRawText_0xbc205: ; bc205 + db "SUNDAY@" +; bc20c + +UnknownRawText_0xbc20c: ; bc20c + db "MONDAY@" +; bc213 + +UnknownRawText_0xbc213: ; bc213 + db "TUESDAY@" +; bc21b + +UnknownRawText_0xbc21b: ; bc21b + db "WEDNESDAY@" +; bc225 + +UnknownRawText_0xbc225: ; bc225 + db "THURSDAY@" +; bc22e + +UnknownRawText_0xbc22e: ; bc22e + db "FRIDAY@" +; bc235 + +UnknownRawText_0xbc235: ; bc235 + db "SATURDAY@" +; bc23e + +UnknownScript_0xbc23e: ; 0xbc23e + clearbit1 $06cd + end +; 0xbc242 + +UnknownScript_0xbc242: ; 0xbc242 + setbit2 $0013 + setbit1 $06cf + setbit1 $06d1 + clearbit1 $06ce + clearbit1 $0025 + setbit1 $0756 + specialphonecall $0004 + domaptrigger GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN, $1 + end +; 0xbc25c + +UnknownScript_0xbc25c: ; 0xbc25c + special $0034 + 2call UnknownScript_0xbc380 + setbit1 $0747 + clearbit1 $0748 + setbit1 $02d2 + warp GROUP_ROUTE_36_NATIONAL_PARK_GATE, MAP_ROUTE_36_NATIONAL_PARK_GATE, $0, $4 + applymovement $0, MovementData_0xbcea1 + +UnknownScript_0xbc274: ; bc274 + clearbit2 $0011 + clearbit1 $02d2 + clearbit1 $0313 + clearbit1 $0314 + clearbit1 $0315 + clearbit1 $0316 + loadfont + 3writetext $6c, $45bf + closetext + special $0014 + RAM2MEM $0 + if_equal $1, UnknownScript_0xbc31e + if_equal $2, UnknownScript_0xbc332 + if_equal $3, UnknownScript_0xbc343 + 3writetext $6c, $4681 + keeptextopen + waitbutton + verbosegiveitem BERRY, 1 + iffalse UnknownScript_0xbc375 + 3writetext $6c, $46b7 + keeptextopen + 2jump $42b6 +; 0xbc2b1 + +UnknownScript_0xbc2b1: ; 0xbc2b1 + 3writetext $6c, $465b + keeptextopen + checkbit1 $0308 + iffalse $42c4 + 3writetext $6c, $46d9 + closetext + special $0017 + special $0015 + if_equal $0, $42d4 + if_equal $2, $42d4 + 3writetext $6c, $470d + closetext + loadmovesprites + dotrigger $0 + domaptrigger GROUP_ROUTE_35_NATIONAL_PARK_GATE, MAP_ROUTE_35_NATIONAL_PARK_GATE, $0 + setbit1 $0716 + setbit1 $0717 + setbit1 $0718 + setbit1 $0719 + setbit1 $071a + setbit1 $071b + setbit1 $071c + setbit1 $071d + setbit1 $071e + setbit1 $071f + setbit1 $0720 + setbit1 $0721 + setbit1 $0722 + setbit1 $0723 + setbit1 $0724 + setbit1 $0725 + setbit1 $0726 + setbit1 $0727 + setbit1 $0728 + setbit1 $0729 + setbit2 $0051 + special $003c + end +; 0xbc31e + +UnknownScript_0xbc31e: ; 0xbc31e + setbit1 $0000 + itemtotext SUN_STONE, $1 + 3writetext $6c, $4621 + closetext + verbosegiveitem SUN_STONE, 1 + iffalse UnknownScript_0xbc354 + 2jump UnknownScript_0xbc2b1 +; 0xbc332 + +UnknownScript_0xbc332: ; 0xbc332 + itemtotext EVERSTONE, $1 + 3writetext $6c, $4621 + closetext + verbosegiveitem EVERSTONE, 1 + iffalse UnknownScript_0xbc35f + 2jump UnknownScript_0xbc2b1 +; 0xbc343 + +UnknownScript_0xbc343: ; 0xbc343 + itemtotext GOLD_BERRY, $1 + 3writetext $6c, $4621 + closetext + verbosegiveitem GOLD_BERRY, 1 + iffalse UnknownScript_0xbc36a + 2jump UnknownScript_0xbc2b1 +; 0xbc354 + +UnknownScript_0xbc354: ; 0xbc354 + 3writetext $6c, $48cc + keeptextopen + setbit1 $0313 + 2jump UnknownScript_0xbc2b1 +; 0xbc35f + +UnknownScript_0xbc35f: ; 0xbc35f + 3writetext $6c, $48cc + keeptextopen + setbit1 $0314 + 2jump UnknownScript_0xbc2b1 +; 0xbc36a + +UnknownScript_0xbc36a: ; 0xbc36a + 3writetext $6c, $48cc + keeptextopen + setbit1 $0315 + 2jump UnknownScript_0xbc2b1 +; 0xbc375 + +UnknownScript_0xbc375: ; 0xbc375 + 3writetext $6c, $48cc + keeptextopen + setbit1 $0316 + 2jump $42a9 +; 0xbc380 + +UnknownScript_0xbc380: ; 0xbc380 + checkbit1 $0716 + iftrue .skip1 + clearbit1 $0720 +.skip1 + checkbit1 $0717 + iftrue .skip2 + clearbit1 $0721 +.skip2 + checkbit1 $0718 + iftrue .skip3 + clearbit1 $0722 +.skip3 + checkbit1 $0719 + iftrue .skip4 + clearbit1 $0723 +.skip4 + checkbit1 $071a + iftrue .skip5 + clearbit1 $0724 +.skip5 + checkbit1 $071b + iftrue .skip6 + clearbit1 $0725 +.skip6 + checkbit1 $071c + iftrue .skip7 + clearbit1 $0726 +.skip7 + checkbit1 $071d + iftrue .skip8 + clearbit1 $0727 +.skip8 + checkbit1 $071e + iftrue .skip9 + clearbit1 $0728 +.skip9 + checkbit1 $071f + iftrue .skip10 + clearbit1 $0729 +.skip10 + end +; 0xbc3db + +UnknownScript_0xbc3db: ; 0xbc3db + setbit1 $06cb + setbit1 $06ce + setbit1 $06cd + setbit1 $06d0 + setbit1 $06f3 + setbit1 $06e9 + setbit1 $06f4 + setbit1 $06d5 + setbit1 $06de + setbit1 $06dd + setbit1 $06df + setbit1 $06c0 + setbit1 $06e4 + setbit1 $0025 + setbit1 $06be + setbit1 $06bf + setbit1 $06c1 + setbit1 $06f9 + setbit1 $06fd + setbit1 $06ff + setbit1 $0700 + setbit1 $0702 + setbit1 $0703 + setbit1 $0704 + setbit1 $070d + setbit1 $070e + setbit1 $070f + setbit1 $0710 + setbit1 $0715 + setbit1 $0716 + setbit1 $0717 + setbit1 $0718 + setbit1 $0719 + setbit1 $071a + setbit1 $071b + setbit1 $071c + setbit1 $071d + setbit1 $071e + setbit1 $071f + setbit1 $0720 + setbit1 $0721 + setbit1 $0722 + setbit1 $0723 + setbit1 $0724 + setbit1 $0725 + setbit1 $0726 + setbit1 $0727 + setbit1 $0728 + setbit1 $0729 + setbit1 $072c + setbit1 $072f + setbit1 $072d + setbit1 $0735 + setbit1 $0736 + setbit1 $073c + setbit1 $073d + setbit1 $0741 + setbit1 $0742 + setbit1 $0743 + setbit1 $0744 + setbit1 $02a4 + setbit1 $02af + setbit1 $0749 + setbit1 $06d3 + setbit1 $074d + setbit1 $0712 + setbit1 $0713 + setbit1 $0711 + setbit1 $06d4 + setbit1 $0304 + setbit1 $0307 + setbit1 $06d8 + setbit1 $06c3 + setbit1 $06c2 + setbit1 $06c6 + setbit1 $075f + setbit1 $0731 + setbit1 $074a + setbit1 $0762 + setbit1 $0738 + setbit1 $073a + setbit1 $073b + setbit1 $0733 + setbit1 $073f + setbit1 $078d + setbit1 $0766 + setbit1 $0768 + setbit1 $0769 + setbit1 $076a + setbit1 $078e + setbit1 $078f + setbit1 $0790 + setbit1 $0791 + setbit1 $0793 + setbit1 $07a4 + setbit1 $07a4 + setbit1 $07a5 + setbit1 $06ec + setbit1 $06ed + setbit1 $06f0 + setbit1 $07a9 + setbit1 $07aa + setbit1 $06c8 + setbit1 $07ac + setbit1 $07ad + setbit1 $07b5 + setbit1 $07b6 + setbit1 $07c5 + setbit1 $07b7 + setbit1 $07b0 + setbit1 $07af + setbit1 $07ae + setbit1 $07cf + setbit2 $000e + setbit2 $0017 + variablesprite $4, $52 + variablesprite $5, $4 + variablesprite $6, $35 + variablesprite $7, $a + variablesprite $8, $a + variablesprite $9, $a + variablesprite $a, $a + variablesprite $b, $28 + variablesprite $c, $28 + setbit1 $00fb + setbit1 $076d + setbit1 $076c + setbit1 $076e + setbit1 $076f + setbit1 $0773 + setbit1 $0776 + setbit1 $0777 + setbit1 $0779 + setbit1 $0772 + setbit1 $077b + setbit1 $0036 + return +; 0xbc574 + +UnknownScript_0xbc574: ; 0xbc574 + special $005d + checkcode $17 + if_equal $5, UnknownScript_0xbc5c9 + if_equal $7, UnknownScript_0xbc5ce + if_equal $b, UnknownScript_0xbc5d3 + if_equal $d, UnknownScript_0xbc5d8 + if_equal $f, UnknownScript_0xbc5dd + if_equal $10, UnknownScript_0xbc5e2 + if_equal $11, UnknownScript_0xbc5e7 + if_equal $13, UnknownScript_0xbc5ec + if_equal $14, UnknownScript_0xbc5f1 + if_equal $16, UnknownScript_0xbc5f6 + if_equal $17, UnknownScript_0xbc5fb + if_equal $18, UnknownScript_0xbc600 + if_equal $1b, UnknownScript_0xbc605 + if_equal $1c, UnknownScript_0xbc60a + if_equal $1d, UnknownScript_0xbc60f + if_equal $1e, UnknownScript_0xbc614 + if_equal $20, UnknownScript_0xbc619 + if_equal $21, UnknownScript_0xbc61e + if_equal $22, UnknownScript_0xbc623 + if_equal $23, UnknownScript_0xbc628 + +UnknownScript_0xbc5c9: ; bc5c9 + 3writetext $6c, $49fe + end +; 0xbc5ce + +UnknownScript_0xbc5ce: ; 0xbc5ce + 3writetext $6c, $4d9f + end +; 0xbc5d3 + +UnknownScript_0xbc5d3: ; 0xbc5d3 + 3writetext $6c, $502e + end +; 0xbc5d8 + +UnknownScript_0xbc5d8: ; 0xbc5d8 + 3writetext $6c, $542d + end +; 0xbc5dd + +UnknownScript_0xbc5dd: ; 0xbc5dd + 3writetext $6c, $5800 + end +; 0xbc5e2 + +UnknownScript_0xbc5e2: ; 0xbc5e2 + 3writetext $6c, $5a71 + end +; 0xbc5e7 + +UnknownScript_0xbc5e7: ; 0xbc5e7 + 3writetext $6c, $5cd5 + end +; 0xbc5ec + +UnknownScript_0xbc5ec: ; 0xbc5ec + 3writetext $29, $4000 + end +; 0xbc5f1 + +UnknownScript_0xbc5f1: ; 0xbc5f1 + 3writetext $29, $41c0 + end +; 0xbc5f6 + +UnknownScript_0xbc5f6: ; 0xbc5f6 + 3writetext $29, $4642 + end +; 0xbc5fb + +UnknownScript_0xbc5fb: ; 0xbc5fb + 3writetext $29, $4829 + end +; 0xbc600 + +UnknownScript_0xbc600: ; 0xbc600 + 3writetext $29, $4a31 + end +; 0xbc605 + +UnknownScript_0xbc605: ; 0xbc605 + 3writetext $29, $4ed4 + end +; 0xbc60a + +UnknownScript_0xbc60a: ; 0xbc60a + 3writetext $29, $50d5 + end +; 0xbc60f + +UnknownScript_0xbc60f: ; 0xbc60f + 3writetext $29, $52e2 + end +; 0xbc614 + +UnknownScript_0xbc614: ; 0xbc614 + 3writetext $29, $5545 + end +; 0xbc619 + +UnknownScript_0xbc619: ; 0xbc619 + 3writetext $29, $5937 + end +; 0xbc61e + +UnknownScript_0xbc61e: ; 0xbc61e + 3writetext $29, $5bc4 + end +; 0xbc623 + +UnknownScript_0xbc623: ; 0xbc623 + 3writetext $29, $5dc6 + end +; 0xbc628 + +UnknownScript_0xbc628: ; 0xbc628 + 3writetext $29, $600c + end +; 0xbc62d + +UnknownScript_0xbc62d: ; 0xbc62d + special $005d + checkcode $17 + if_equal $5, UnknownScript_0xbc682 + if_equal $7, UnknownScript_0xbc687 + if_equal $b, UnknownScript_0xbc68c + if_equal $d, UnknownScript_0xbc691 + if_equal $f, UnknownScript_0xbc696 + if_equal $10, UnknownScript_0xbc69b + if_equal $11, UnknownScript_0xbc6a0 + if_equal $13, UnknownScript_0xbc6a5 + if_equal $14, UnknownScript_0xbc6aa + if_equal $16, UnknownScript_0xbc6af + if_equal $17, UnknownScript_0xbc6b4 + if_equal $18, UnknownScript_0xbc6b9 + if_equal $1b, UnknownScript_0xbc6be + if_equal $1c, UnknownScript_0xbc6c3 + if_equal $1d, UnknownScript_0xbc6c8 + if_equal $1e, UnknownScript_0xbc6cd + if_equal $20, UnknownScript_0xbc6d2 + if_equal $21, UnknownScript_0xbc6d7 + if_equal $22, UnknownScript_0xbc6dc + if_equal $23, UnknownScript_0xbc6e1 + +UnknownScript_0xbc682: ; bc682 + 3writetext $6c, $4a82 + end +; 0xbc687 + +UnknownScript_0xbc687: ; 0xbc687 + 3writetext $6c, $4e2c + end +; 0xbc68c + +UnknownScript_0xbc68c: ; 0xbc68c + 3writetext $6c, $50d3 + end +; 0xbc691 + +UnknownScript_0xbc691: ; 0xbc691 + 3writetext $6c, $54e4 + end +; 0xbc696 + +UnknownScript_0xbc696: ; 0xbc696 + 3writetext $6c, $587b + end +; 0xbc69b + +UnknownScript_0xbc69b: ; 0xbc69b + 3writetext $6c, $5b1d + end +; 0xbc6a0 + +UnknownScript_0xbc6a0: ; 0xbc6a0 + 3writetext $6c, $5d85 + end +; 0xbc6a5 + +UnknownScript_0xbc6a5: ; 0xbc6a5 + 3writetext $29, $40a9 + end +; 0xbc6aa + +UnknownScript_0xbc6aa: ; 0xbc6aa + 3writetext $29, $426a + end +; 0xbc6af + +UnknownScript_0xbc6af: ; 0xbc6af + 3writetext $29, $470b + end +; 0xbc6b4 + +UnknownScript_0xbc6b4: ; 0xbc6b4 + 3writetext $29, $48fc + end +; 0xbc6b9 + +UnknownScript_0xbc6b9: ; 0xbc6b9 + 3writetext $29, $4b03 + end +; 0xbc6be + +UnknownScript_0xbc6be: ; 0xbc6be + 3writetext $29, $4fc8 + end +; 0xbc6c3 + +UnknownScript_0xbc6c3: ; 0xbc6c3 + 3writetext $29, $5175 + end +; 0xbc6c8 + +UnknownScript_0xbc6c8: ; 0xbc6c8 + 3writetext $29, $5383 + end +; 0xbc6cd + +UnknownScript_0xbc6cd: ; 0xbc6cd + 3writetext $29, $5621 + end +; 0xbc6d2 + +UnknownScript_0xbc6d2: ; 0xbc6d2 + 3writetext $29, $59bc + end +; 0xbc6d7 + +UnknownScript_0xbc6d7: ; 0xbc6d7 + 3writetext $29, $5c4b + end +; 0xbc6dc + +UnknownScript_0xbc6dc: ; 0xbc6dc + 3writetext $29, $5e63 + end +; 0xbc6e1 + +UnknownScript_0xbc6e1: ; 0xbc6e1 + 3writetext $29, $6076 + end +; 0xbc6e6 + +UnknownScript_0xbc6e6: ; 0xbc6e6 + 3writetext $6c, $49c4 + playsound $0093 + waitbutton + keeptextopen + end +; 0xbc6f0 + +UnknownScript_0xbc6f0: ; 0xbc6f0 + checkcode $17 + if_equal $5, $4742 + if_equal $7, UnknownScript_0xbc749 + if_equal $b, UnknownScript_0xbc750 + if_equal $d, UnknownScript_0xbc757 + if_equal $f, UnknownScript_0xbc75e + if_equal $10, UnknownScript_0xbc765 + if_equal $11, UnknownScript_0xbc76c + if_equal $13, UnknownScript_0xbc773 + if_equal $14, UnknownScript_0xbc77a + if_equal $16, UnknownScript_0xbc781 + if_equal $17, UnknownScript_0xbc788 + if_equal $18, UnknownScript_0xbc78f + if_equal $1b, UnknownScript_0xbc796 + if_equal $1c, UnknownScript_0xbc79d + if_equal $1d, UnknownScript_0xbc7a4 + if_equal $1e, UnknownScript_0xbc7ab + if_equal $20, UnknownScript_0xbc7b2 + if_equal $21, UnknownScript_0xbc7b9 + if_equal $22, UnknownScript_0xbc7c0 + if_equal $23, UnknownScript_0xbc7c7 + 3writetext $6c, $4adb + closetext + loadmovesprites + end +; 0xbc749 + +UnknownScript_0xbc749: ; 0xbc749 + 3writetext $6c, $4e89 + closetext + loadmovesprites + end +; 0xbc750 + +UnknownScript_0xbc750: ; 0xbc750 + 3writetext $6c, $5136 + closetext + loadmovesprites + end +; 0xbc757 + +UnknownScript_0xbc757: ; 0xbc757 + 3writetext $6c, $5553 + closetext + loadmovesprites + end +; 0xbc75e + +UnknownScript_0xbc75e: ; 0xbc75e + 3writetext $6c, $58d7 + closetext + loadmovesprites + end +; 0xbc765 + +UnknownScript_0xbc765: ; 0xbc765 + 3writetext $6c, $5b8e + closetext + loadmovesprites + end +; 0xbc76c + +UnknownScript_0xbc76c: ; 0xbc76c + 3writetext $6c, $5db9 + closetext + loadmovesprites + end +; 0xbc773 + +UnknownScript_0xbc773: ; 0xbc773 + 3writetext $29, $40f8 + closetext + loadmovesprites + end +; 0xbc77a + +UnknownScript_0xbc77a: ; 0xbc77a + 3writetext $29, $42ab + closetext + loadmovesprites + end +; 0xbc781 + +UnknownScript_0xbc781: ; 0xbc781 + 3writetext $29, $4730 + closetext + loadmovesprites + end +; 0xbc788 + +UnknownScript_0xbc788: ; 0xbc788 + 3writetext $29, $494d + closetext + loadmovesprites + end +; 0xbc78f + +UnknownScript_0xbc78f: ; 0xbc78f + 3writetext $29, $4b47 + closetext + loadmovesprites + end +; 0xbc796 + +UnknownScript_0xbc796: ; 0xbc796 + 3writetext $29, $502e + closetext + loadmovesprites + end +; 0xbc79d + +UnknownScript_0xbc79d: ; 0xbc79d + 3writetext $29, $51ac + closetext + loadmovesprites + end +; 0xbc7a4 + +UnknownScript_0xbc7a4: ; 0xbc7a4 + 3writetext $29, $53de + closetext + loadmovesprites + end +; 0xbc7ab + +UnknownScript_0xbc7ab: ; 0xbc7ab + 3writetext $29, $5666 + closetext + loadmovesprites + end +; 0xbc7b2 + +UnknownScript_0xbc7b2: ; 0xbc7b2 + 3writetext $29, $5a28 + closetext + loadmovesprites + end +; 0xbc7b9 + +UnknownScript_0xbc7b9: ; 0xbc7b9 + 3writetext $29, $5c8e + closetext + loadmovesprites + end +; 0xbc7c0 + +UnknownScript_0xbc7c0: ; 0xbc7c0 + 3writetext $29, $5ea8 + closetext + loadmovesprites + end +; 0xbc7c7 + +UnknownScript_0xbc7c7: ; 0xbc7c7 + 3writetext $29, $60b5 + closetext + loadmovesprites + end +; 0xbc7ce + +UnknownScript_0xbc7ce: ; 0xbc7ce + checkcode $17 + if_equal $5, $4820 + if_equal $7, UnknownScript_0xbc827 + if_equal $b, UnknownScript_0xbc82e + if_equal $d, UnknownScript_0xbc835 + if_equal $f, UnknownScript_0xbc83c + if_equal $10, UnknownScript_0xbc843 + if_equal $11, UnknownScript_0xbc84a + if_equal $13, UnknownScript_0xbc851 + if_equal $14, UnknownScript_0xbc858 + if_equal $16, UnknownScript_0xbc85f + if_equal $17, UnknownScript_0xbc866 + if_equal $18, UnknownScript_0xbc86d + if_equal $1b, UnknownScript_0xbc874 + if_equal $1c, UnknownScript_0xbc87b + if_equal $1d, UnknownScript_0xbc882 + if_equal $1e, UnknownScript_0xbc889 + if_equal $20, UnknownScript_0xbc890 + if_equal $21, UnknownScript_0xbc897 + if_equal $22, UnknownScript_0xbc89e + if_equal $23, UnknownScript_0xbc8a5 + 3writetext $6c, $4afd + closetext + loadmovesprites + end +; 0xbc827 + +UnknownScript_0xbc827: ; 0xbc827 + 3writetext $6c, $4ea2 + closetext + loadmovesprites + end +; 0xbc82e + +UnknownScript_0xbc82e: ; 0xbc82e + 3writetext $6c, $517b + closetext + loadmovesprites + end +; 0xbc835 + +UnknownScript_0xbc835: ; 0xbc835 + 3writetext $6c, $5584 + closetext + loadmovesprites + end +; 0xbc83c + +UnknownScript_0xbc83c: ; 0xbc83c + 3writetext $6c, $5908 + closetext + loadmovesprites + end +; 0xbc843 + +UnknownScript_0xbc843: ; 0xbc843 + 3writetext $6c, $5bd2 + closetext + loadmovesprites + end +; 0xbc84a + +UnknownScript_0xbc84a: ; 0xbc84a + 3writetext $6c, $5df4 + closetext + loadmovesprites + end +; 0xbc851 + +UnknownScript_0xbc851: ; 0xbc851 + 3writetext $29, $4126 + closetext + loadmovesprites + end +; 0xbc858 + +UnknownScript_0xbc858: ; 0xbc858 + 3writetext $29, $42f2 + closetext + loadmovesprites + end +; 0xbc85f + +UnknownScript_0xbc85f: ; 0xbc85f + 3writetext $29, $4794 + closetext + loadmovesprites + end +; 0xbc866 + +UnknownScript_0xbc866: ; 0xbc866 + 3writetext $29, $498a + closetext + loadmovesprites + end +; 0xbc86d + +UnknownScript_0xbc86d: ; 0xbc86d + 3writetext $29, $4b87 + closetext + loadmovesprites + end +; 0xbc874 + +UnknownScript_0xbc874: ; 0xbc874 + 3writetext $29, $505f + closetext + loadmovesprites + end +; 0xbc87b + +UnknownScript_0xbc87b: ; 0xbc87b + 3writetext $29, $51ee + closetext + loadmovesprites + end +; 0xbc882 + +UnknownScript_0xbc882: ; 0xbc882 + 3writetext $29, $5412 + closetext + loadmovesprites + end +; 0xbc889 + +UnknownScript_0xbc889: ; 0xbc889 + 3writetext $29, $56b6 + closetext + loadmovesprites + end +; 0xbc890 + +UnknownScript_0xbc890: ; 0xbc890 + 3writetext $29, $5a5a + closetext + loadmovesprites + end +; 0xbc897 + +UnknownScript_0xbc897: ; 0xbc897 + 3writetext $29, $5cc5 + closetext + loadmovesprites + end +; 0xbc89e + +UnknownScript_0xbc89e: ; 0xbc89e + 3writetext $29, $5ed6 + closetext + loadmovesprites + end +; 0xbc8a5 + +UnknownScript_0xbc8a5: ; 0xbc8a5 + 3writetext $29, $60e2 + closetext + loadmovesprites + end +; 0xbc8ac + +UnknownScript_0xbc8ac: ; 0xbc8ac + checkcode $17 + if_equal $5, $48fe + if_equal $7, UnknownScript_0xbc905 + if_equal $b, UnknownScript_0xbc90c + if_equal $d, UnknownScript_0xbc913 + if_equal $f, UnknownScript_0xbc91a + if_equal $10, UnknownScript_0xbc921 + if_equal $11, UnknownScript_0xbc928 + if_equal $13, UnknownScript_0xbc92f + if_equal $14, UnknownScript_0xbc936 + if_equal $16, UnknownScript_0xbc93d + if_equal $17, UnknownScript_0xbc944 + if_equal $18, UnknownScript_0xbc94b + if_equal $1b, UnknownScript_0xbc952 + if_equal $1c, UnknownScript_0xbc959 + if_equal $1d, UnknownScript_0xbc960 + if_equal $1e, UnknownScript_0xbc967 + if_equal $20, UnknownScript_0xbc96e + if_equal $21, UnknownScript_0xbc975 + if_equal $22, UnknownScript_0xbc97c + if_equal $23, UnknownScript_0xbc983 + 3writetext $6c, $4b42 + closetext + loadmovesprites + end +; 0xbc905 + +UnknownScript_0xbc905: ; 0xbc905 + 3writetext $6c, $4ebc + closetext + loadmovesprites + end +; 0xbc90c + +UnknownScript_0xbc90c: ; 0xbc90c + 3writetext $6c, $51c4 + closetext + loadmovesprites + end +; 0xbc913 + +UnknownScript_0xbc913: ; 0xbc913 + 3writetext $6c, $55b6 + closetext + loadmovesprites + end +; 0xbc91a + +UnknownScript_0xbc91a: ; 0xbc91a + 3writetext $6c, $5936 + closetext + loadmovesprites + end +; 0xbc921 + +UnknownScript_0xbc921: ; 0xbc921 + 3writetext $6c, $5c06 + closetext + loadmovesprites + end +; 0xbc928 + +UnknownScript_0xbc928: ; 0xbc928 + 3writetext $6c, $5e50 + closetext + loadmovesprites + end +; 0xbc92f + +UnknownScript_0xbc92f: ; 0xbc92f + 3writetext $29, $4158 + closetext + loadmovesprites + end +; 0xbc936 + +UnknownScript_0xbc936: ; 0xbc936 + 3writetext $29, $434a + closetext + loadmovesprites + end +; 0xbc93d + +UnknownScript_0xbc93d: ; 0xbc93d + 3writetext $29, $47eb + closetext + loadmovesprites + end +; 0xbc944 + +UnknownScript_0xbc944: ; 0xbc944 + 3writetext $29, $49bd + closetext + loadmovesprites + end +; 0xbc94b + +UnknownScript_0xbc94b: ; 0xbc94b + 3writetext $29, $4bcd + closetext + loadmovesprites + end +; 0xbc952 + +UnknownScript_0xbc952: ; 0xbc952 + 3writetext $29, $508c + closetext + loadmovesprites + end +; 0xbc959 + +UnknownScript_0xbc959: ; 0xbc959 + 3writetext $29, $5216 + closetext + loadmovesprites + end +; 0xbc960 + +UnknownScript_0xbc960: ; 0xbc960 + 3writetext $29, $5446 + closetext + loadmovesprites + end +; 0xbc967 + +UnknownScript_0xbc967: ; 0xbc967 + 3writetext $29, $56e2 + closetext + loadmovesprites + end +; 0xbc96e + +UnknownScript_0xbc96e: ; 0xbc96e + 3writetext $29, $5aa6 + closetext + loadmovesprites + end +; 0xbc975 + +UnknownScript_0xbc975: ; 0xbc975 + 3writetext $29, $5cfa + closetext + loadmovesprites + end +; 0xbc97c + +UnknownScript_0xbc97c: ; 0xbc97c + 3writetext $29, $5f06 + closetext + loadmovesprites + end +; 0xbc983 + +UnknownScript_0xbc983: ; 0xbc983 + 3writetext $29, $6144 + closetext + loadmovesprites + end +; 0xbc98a + +UnknownScript_0xbc98a: ; 0xbc98a + checkcode $17 + if_equal $5, $49d0 + if_equal $7, UnknownScript_0xbc9d7 + if_equal $b, UnknownScript_0xbc9de + if_equal $d, UnknownScript_0xbc9e5 + if_equal $f, UnknownScript_0xbc9ec + if_equal $10, UnknownScript_0xbc9f3 + if_equal $11, UnknownScript_0xbc9fa + if_equal $13, UnknownScript_0xbca01 + if_equal $14, UnknownScript_0xbca08 + if_equal $17, UnknownScript_0xbca0f + if_equal $18, UnknownScript_0xbca16 + if_equal $1b, UnknownScript_0xbca1d + if_equal $1d, UnknownScript_0xbca24 + if_equal $1e, UnknownScript_0xbca2b + if_equal $20, UnknownScript_0xbca32 + if_equal $21, UnknownScript_0xbca39 + if_equal $23, UnknownScript_0xbca40 + 3writetext $6c, $4b75 + closetext + loadmovesprites + end +; 0xbc9d7 + +UnknownScript_0xbc9d7: ; 0xbc9d7 + 3writetext $6c, $4edc + closetext + loadmovesprites + end +; 0xbc9de + +UnknownScript_0xbc9de: ; 0xbc9de + 3writetext $6c, $51fe + closetext + loadmovesprites + end +; 0xbc9e5 + +UnknownScript_0xbc9e5: ; 0xbc9e5 + 3writetext $6c, $55d5 + closetext + loadmovesprites + end +; 0xbc9ec + +UnknownScript_0xbc9ec: ; 0xbc9ec + 3writetext $6c, $5954 + closetext + loadmovesprites + end +; 0xbc9f3 + +UnknownScript_0xbc9f3: ; 0xbc9f3 + 3writetext $6c, $5c32 + closetext + loadmovesprites + end +; 0xbc9fa + +UnknownScript_0xbc9fa: ; 0xbc9fa + 3writetext $6c, $5e98 + closetext + loadmovesprites + end +; 0xbca01 + +UnknownScript_0xbca01: ; 0xbca01 + 3writetext $29, $418d + closetext + loadmovesprites + end +; 0xbca08 + +UnknownScript_0xbca08: ; 0xbca08 + 3writetext $29, $4382 + closetext + loadmovesprites + end +; 0xbca0f + +UnknownScript_0xbca0f: ; 0xbca0f + 3writetext $29, $49fc + closetext + loadmovesprites + end +; 0xbca16 + +UnknownScript_0xbca16: ; 0xbca16 + 3writetext $29, $4bec + closetext + loadmovesprites + end +; 0xbca1d + +UnknownScript_0xbca1d: ; 0xbca1d + 3writetext $29, $50b1 + closetext + loadmovesprites + end +; 0xbca24 + +UnknownScript_0xbca24: ; 0xbca24 + 3writetext $29, $548c + closetext + loadmovesprites + end +; 0xbca2b + +UnknownScript_0xbca2b: ; 0xbca2b + 3writetext $29, $571e + closetext + loadmovesprites + end +; 0xbca32 + +UnknownScript_0xbca32: ; 0xbca32 + 3writetext $29, $5ada + closetext + loadmovesprites + end +; 0xbca39 + +UnknownScript_0xbca39: ; 0xbca39 + 3writetext $29, $5d1d + closetext + loadmovesprites + end +; 0xbca40 + +UnknownScript_0xbca40: ; 0xbca40 + 3writetext $29, $6175 + closetext + loadmovesprites + end +; 0xbca47 + +UnknownScript_0xbca47: ; 0xbca47 + checkcode $17 + if_equal $d, $4a65 + if_equal $10, UnknownScript_0xbca6b + if_equal $18, UnknownScript_0xbca71 + if_equal $1c, UnknownScript_0xbca77 + if_equal $1d, UnknownScript_0xbca7d + if_equal $21, UnknownScript_0xbca83 + if_equal $22, UnknownScript_0xbca89 + 3writetext $6c, $5607 + keeptextopen + end +; 0xbca6b + +UnknownScript_0xbca6b: ; 0xbca6b + 3writetext $6c, $5c57 + keeptextopen + end +; 0xbca71 + +UnknownScript_0xbca71: ; 0xbca71 + 3writetext $29, $4c24 + keeptextopen + end +; 0xbca77 + +UnknownScript_0xbca77: ; 0xbca77 + 3writetext $29, $523a + keeptextopen + end +; 0xbca7d + +UnknownScript_0xbca7d: ; 0xbca7d + 3writetext $29, $54e3 + keeptextopen + end +; 0xbca83 + +UnknownScript_0xbca83: ; 0xbca83 + 3writetext $29, $5d4d + keeptextopen + end +; 0xbca89 + +UnknownScript_0xbca89: ; 0xbca89 + 3writetext $29, $5f37 + keeptextopen + end +; 0xbca8f + +UnknownScript_0xbca8f: ; 0xbca8f + checkcode $17 + if_equal $7, $4abd + if_equal $d, UnknownScript_0xbcac4 + if_equal $f, UnknownScript_0xbcacb + if_equal $10, UnknownScript_0xbcad2 + if_equal $18, UnknownScript_0xbcad9 + if_equal $1c, UnknownScript_0xbcae0 + if_equal $1d, UnknownScript_0xbcae7 + if_equal $20, UnknownScript_0xbcaee + if_equal $21, UnknownScript_0xbcaf5 + if_equal $22, UnknownScript_0xbcafc + if_equal $23, UnknownScript_0xbcb03 + 3writetext $6c, $4eff + closetext + loadmovesprites + end +; 0xbcac4 + +UnknownScript_0xbcac4: ; 0xbcac4 + 3writetext $6c, $564d + closetext + loadmovesprites + end +; 0xbcacb + +UnknownScript_0xbcacb: ; 0xbcacb + 3writetext $6c, $5978 + closetext + loadmovesprites + end +; 0xbcad2 + +UnknownScript_0xbcad2: ; 0xbcad2 + 3writetext $6c, $5c91 + closetext + loadmovesprites + end +; 0xbcad9 + +UnknownScript_0xbcad9: ; 0xbcad9 + 3writetext $29, $4c47 + closetext + loadmovesprites + end +; 0xbcae0 + +UnknownScript_0xbcae0: ; 0xbcae0 + 3writetext $29, $52a0 + closetext + loadmovesprites + end +; 0xbcae7 + +UnknownScript_0xbcae7: ; 0xbcae7 + 3writetext $29, $5513 + closetext + loadmovesprites + end +; 0xbcaee + +UnknownScript_0xbcaee: ; 0xbcaee + 3writetext $29, $5aff + closetext + loadmovesprites + end +; 0xbcaf5 + +UnknownScript_0xbcaf5: ; 0xbcaf5 + 3writetext $29, $5d9a + closetext + loadmovesprites + end +; 0xbcafc + +UnknownScript_0xbcafc: ; 0xbcafc + 3writetext $29, $5faa + closetext + loadmovesprites + end +; 0xbcb03 + +UnknownScript_0xbcb03: ; 0xbcb03 + 3writetext $29, $61c9 + closetext + loadmovesprites + end +; 0xbcb0a + +UnknownScript_0xbcb0a: ; 0xbcb0a + loadfont + checkcode $17 + if_equal $7, $4b1d + if_equal $f, UnknownScript_0xbcb23 + if_equal $20, UnknownScript_0xbcb29 + if_equal $23, UnknownScript_0xbcb2f + 3writetext $6c, $4f2f + keeptextopen + end +; 0xbcb23 + +UnknownScript_0xbcb23: ; 0xbcb23 + 3writetext $6c, $59be + keeptextopen + end +; 0xbcb29 + +UnknownScript_0xbcb29: ; 0xbcb29 + 3writetext $29, $5b3f + keeptextopen + end +; 0xbcb2f + +UnknownScript_0xbcb2f: ; 0xbcb2f + 3writetext $29, $6200 + keeptextopen + end +; 0xbcb35 + +UnknownScript_0xbcb35: ; 0xbcb35 + checkcode $17 + if_equal $6, $4b57 + if_equal $c, UnknownScript_0xbcb5c + if_equal $e, UnknownScript_0xbcb61 + if_equal $12, UnknownScript_0xbcb66 + if_equal $15, UnknownScript_0xbcb6b + if_equal $1a, UnknownScript_0xbcb70 + if_equal $1f, UnknownScript_0xbcb75 + if_equal $24, UnknownScript_0xbcb7a + 3writetext $6c, $4bb6 + end +; 0xbcb5c + +UnknownScript_0xbcb5c: ; 0xbcb5c + 3writetext $6c, $5239 + end +; 0xbcb61 + +UnknownScript_0xbcb61: ; 0xbcb61 + 3writetext $6c, $5690 + end +; 0xbcb66 + +UnknownScript_0xbcb66: ; 0xbcb66 + 3writetext $6c, $5ebe + end +; 0xbcb6b + +UnknownScript_0xbcb6b: ; 0xbcb6b + 3writetext $29, $4405 + end +; 0xbcb70 + +UnknownScript_0xbcb70: ; 0xbcb70 + 3writetext $29, $4c8c + end +; 0xbcb75 + +UnknownScript_0xbcb75: ; 0xbcb75 + 3writetext $29, $574a + end +; 0xbcb7a + +UnknownScript_0xbcb7a: ; 0xbcb7a + 3writetext $29, $6295 + end +; 0xbcb7f + +UnknownScript_0xbcb7f: ; 0xbcb7f + checkcode $17 + if_equal $6, $4ba1 + if_equal $c, UnknownScript_0xbcba6 + if_equal $e, UnknownScript_0xbcbab + if_equal $12, UnknownScript_0xbcbb0 + if_equal $15, UnknownScript_0xbcbb5 + if_equal $1a, UnknownScript_0xbcbba + if_equal $1f, UnknownScript_0xbcbbf + if_equal $24, UnknownScript_0xbcbc4 + 3writetext $6c, $4c37 + end +; 0xbcba6 + +UnknownScript_0xbcba6: ; 0xbcba6 + 3writetext $6c, $5314 + end +; 0xbcbab + +UnknownScript_0xbcbab: ; 0xbcbab + 3writetext $6c, $5710 + end +; 0xbcbb0 + +UnknownScript_0xbcbb0: ; 0xbcbb0 + 3writetext $6c, $5f4e + end +; 0xbcbb5 + +UnknownScript_0xbcbb5: ; 0xbcbb5 + 3writetext $29, $44db + end +; 0xbcbba + +UnknownScript_0xbcbba: ; 0xbcbba + 3writetext $29, $4d36 + end +; 0xbcbbf + +UnknownScript_0xbcbbf: ; 0xbcbbf + 3writetext $29, $57e3 + end +; 0xbcbc4 + +UnknownScript_0xbcbc4: ; 0xbcbc4 + 3writetext $29, $6316 + end +; 0xbcbc9 + +UnknownScript_0xbcbc9: ; 0xbcbc9 + 3writetext $6c, $49e1 + playsound $0093 + waitbutton + keeptextopen + end +; 0xbcbd3 + +UnknownScript_0xbcbd3: ; 0xbcbd3 + checkcode $17 + if_equal $6, $4bf5 + if_equal $c, UnknownScript_0xbcbfc + if_equal $e, UnknownScript_0xbcc03 + if_equal $12, UnknownScript_0xbcc0a + if_equal $15, UnknownScript_0xbcc11 + if_equal $1a, UnknownScript_0xbcc18 + if_equal $1f, UnknownScript_0xbcc1f + if_equal $24, UnknownScript_0xbcc26 + 3writetext $6c, $4c9b + closetext + loadmovesprites + end +; 0xbcbfc + +UnknownScript_0xbcbfc: ; 0xbcbfc + 3writetext $6c, $5392 + closetext + loadmovesprites + end +; 0xbcc03 + +UnknownScript_0xbcc03: ; 0xbcc03 + 3writetext $6c, $5755 + closetext + loadmovesprites + end +; 0xbcc0a + +UnknownScript_0xbcc0a: ; 0xbcc0a + 3writetext $6c, $5faa + closetext + loadmovesprites + end +; 0xbcc11 + +UnknownScript_0xbcc11: ; 0xbcc11 + 3writetext $29, $451d + closetext + loadmovesprites + end +; 0xbcc18 + +UnknownScript_0xbcc18: ; 0xbcc18 + 3writetext $29, $4d72 + closetext + loadmovesprites + end +; 0xbcc1f + +UnknownScript_0xbcc1f: ; 0xbcc1f + 3writetext $29, $5820 + closetext + loadmovesprites + end +; 0xbcc26 + +UnknownScript_0xbcc26: ; 0xbcc26 + 3writetext $29, $6359 + closetext + loadmovesprites + end +; 0xbcc2d + +UnknownScript_0xbcc2d: ; 0xbcc2d + checkcode $17 + if_equal $6, $4c4f + if_equal $c, UnknownScript_0xbcc56 + if_equal $e, UnknownScript_0xbcc5d + if_equal $12, UnknownScript_0xbcc64 + if_equal $15, UnknownScript_0xbcc6b + if_equal $1a, UnknownScript_0xbcc72 + if_equal $1f, UnknownScript_0xbcc79 + if_equal $24, UnknownScript_0xbcc80 + 3writetext $6c, $4ce0 + closetext + loadmovesprites + end +; 0xbcc56 + +UnknownScript_0xbcc56: ; 0xbcc56 + 3writetext $6c, $53af + closetext + loadmovesprites + end +; 0xbcc5d + +UnknownScript_0xbcc5d: ; 0xbcc5d + 3writetext $6c, $578a + closetext + loadmovesprites + end +; 0xbcc64 + +UnknownScript_0xbcc64: ; 0xbcc64 + 3writetext $6c, $5fdd + closetext + loadmovesprites + end +; 0xbcc6b + +UnknownScript_0xbcc6b: ; 0xbcc6b + 3writetext $29, $4542 + closetext + loadmovesprites + end +; 0xbcc72 + +UnknownScript_0xbcc72: ; 0xbcc72 + 3writetext $29, $4dcd + closetext + loadmovesprites + end +; 0xbcc79 + +UnknownScript_0xbcc79: ; 0xbcc79 + 3writetext $29, $5842 + closetext + loadmovesprites + end +; 0xbcc80 + +UnknownScript_0xbcc80: ; 0xbcc80 + 3writetext $29, $638c + closetext + loadmovesprites + end +; 0xbcc87 + +UnknownScript_0xbcc87: ; 0xbcc87 + checkcode $17 + if_equal $6, $4ca9 + if_equal $c, UnknownScript_0xbccb0 + if_equal $e, UnknownScript_0xbccb7 + if_equal $12, UnknownScript_0xbccbe + if_equal $15, UnknownScript_0xbccc5 + if_equal $1a, UnknownScript_0xbcccc + if_equal $1f, UnknownScript_0xbccd3 + if_equal $24, UnknownScript_0xbccda + 3writetext $6c, $4d0b + closetext + loadmovesprites + end +; 0xbccb0 + +UnknownScript_0xbccb0: ; 0xbccb0 + 3writetext $6c, $53e4 + closetext + loadmovesprites + end +; 0xbccb7 + +UnknownScript_0xbccb7: ; 0xbccb7 + 3writetext $6c, $57ba + closetext + loadmovesprites + end +; 0xbccbe + +UnknownScript_0xbccbe: ; 0xbccbe + 3writetext $6c, $5ffa + closetext + loadmovesprites + end +; 0xbccc5 + +UnknownScript_0xbccc5: ; 0xbccc5 + 3writetext $29, $4573 + closetext + loadmovesprites + end +; 0xbcccc + +UnknownScript_0xbcccc: ; 0xbcccc + 3writetext $29, $4e01 + closetext + loadmovesprites + end +; 0xbccd3 + +UnknownScript_0xbccd3: ; 0xbccd3 + 3writetext $29, $5881 + closetext + loadmovesprites + end +; 0xbccda + +UnknownScript_0xbccda: ; 0xbccda + 3writetext $29, $63cc + closetext + loadmovesprites + end +; 0xbcce1 + +UnknownScript_0xbcce1: ; 0xbcce1 + checkcode $17 + if_equal $c, $4cff + if_equal $e, UnknownScript_0xbcd06 + if_equal $12, UnknownScript_0xbcd0d + if_equal $15, UnknownScript_0xbcd14 + if_equal $1a, UnknownScript_0xbcd1b + if_equal $1f, UnknownScript_0xbcd22 + if_equal $24, UnknownScript_0xbcd29 + 3writetext $6c, $5409 + closetext + loadmovesprites + end +; 0xbcd06 + +UnknownScript_0xbcd06: ; 0xbcd06 + 3writetext $6c, $57de + closetext + loadmovesprites + end +; 0xbcd0d + +UnknownScript_0xbcd0d: ; 0xbcd0d + 3writetext $6c, $601f + closetext + loadmovesprites + end +; 0xbcd14 + +UnknownScript_0xbcd14: ; 0xbcd14 + 3writetext $29, $4595 + closetext + loadmovesprites + end +; 0xbcd1b + +UnknownScript_0xbcd1b: ; 0xbcd1b + 3writetext $29, $4e21 + closetext + loadmovesprites + end +; 0xbcd22 + +UnknownScript_0xbcd22: ; 0xbcd22 + 3writetext $29, $58a3 + closetext + loadmovesprites + end +; 0xbcd29 + +UnknownScript_0xbcd29: ; 0xbcd29 + 3writetext $29, $63f1 + closetext + loadmovesprites + end +; 0xbcd30 + +UnknownScript_0xbcd30: ; 0xbcd30 + checkcode $17 + if_equal $6, $4d42 + if_equal $15, UnknownScript_0xbcd48 + if_equal $1a, UnknownScript_0xbcd4e + if_equal $1f, UnknownScript_0xbcd54 + 3writetext $6c, $4d2c + keeptextopen + end +; 0xbcd48 + +UnknownScript_0xbcd48: ; 0xbcd48 + 3writetext $29, $45c9 + keeptextopen + end +; 0xbcd4e + +UnknownScript_0xbcd4e: ; 0xbcd4e + 3writetext $29, $4e4c + keeptextopen + end +; 0xbcd54 + +UnknownScript_0xbcd54: ; 0xbcd54 + 3writetext $29, $58d5 + keeptextopen + end +; 0xbcd5a + +UnknownScript_0xbcd5a: ; 0xbcd5a + checkcode $17 + if_equal $6, $4d70 + if_equal $15, UnknownScript_0xbcd77 + if_equal $1a, UnknownScript_0xbcd7e + if_equal $1f, UnknownScript_0xbcd85 + if_equal $24, UnknownScript_0xbcd8c + 3writetext $6c, $4d69 + closetext + loadmovesprites + end +; 0xbcd77 + +UnknownScript_0xbcd77: ; 0xbcd77 + 3writetext $29, $4603 + closetext + loadmovesprites + end +; 0xbcd7e + +UnknownScript_0xbcd7e: ; 0xbcd7e + 3writetext $29, $4e8f + closetext + loadmovesprites + end +; 0xbcd85 + +UnknownScript_0xbcd85: ; 0xbcd85 + 3writetext $29, $5914 + closetext + loadmovesprites + end +; 0xbcd8c + +UnknownScript_0xbcd8c: ; 0xbcd8c + 3writetext $29, $6411 + closetext + loadmovesprites + end +; 0xbcd93 + +UnknownScript_0xbcd93: ; 0xbcd93 + checkcode $17 + if_equal $24, $4d99 + loadfont + 3writetext $29, $6454 + keeptextopen + end +; 0xbcda0 + +UnknownScript_0xbcda0: ; 0xbcda0 + mapnametotext $0 + loadfont + 3writetext $6c, $474e + closetext + loadmovesprites + end +; 0xbcdaa + +UnknownScript_0xbcdaa: ; 0xbcdaa + mapnametotext $0 + loadfont + 3writetext $6c, $474e + keeptextopen + 3writetext $6c, $475c + closetext + loadmovesprites + end +; 0xbcdb9 + +UnknownScript_0xbcdb9: ; 0xbcdb9 + waitbutton + 3writetext $6c, $4648 + playsound $0001 + waitbutton + end +; 0xbcdc3 + +UnknownScript_0xbcdc3: ; 0xbcdc3 + waitbutton + 3writetext $6c, $4648 + playsound $0096 + waitbutton + end +; 0xbcdcd + +UnknownScript_0xbcdcd: ; 0xbcdcd + faceplayer + loadfont + 3writetext $6c, $477f + keeptextopen + checkitem COIN_CASE + iftrue UnknownScript_0xbcde0 + 3writetext $6c, $479c + closetext + loadmovesprites + end +; 0xbcde0 + +UnknownScript_0xbcde0: ; 0xbcde0 + 3writetext $6c, $47e3 + special $0050 + loadmenudata MenuDataHeader_0xbce54 + interpretmenu2 + writebackup + if_equal $1, UnknownScript_0xbcdf7 + if_equal $2, UnknownScript_0xbce1b + 2jump UnknownScript_0xbce4d +; 0xbcdf7 + +UnknownScript_0xbcdf7: ; 0xbcdf7 + checkcoins 9949 + if_equal $0, UnknownScript_0xbce46 + checkmoney $0, 1000 + if_equal $2, UnknownScript_0xbce3f + givecoins 50 + takemoney $0, 1000 + waitbutton + playsound $0022 + 3writetext $6c, $4830 + closetext + 2jump $4de4 +; 0xbce1b + +UnknownScript_0xbce1b: ; 0xbce1b + checkcoins 9499 + if_equal $0, UnknownScript_0xbce46 + checkmoney $0, 10000 + if_equal $2, UnknownScript_0xbce3f + givecoins 500 + takemoney $0, 10000 + waitbutton + playsound $0022 + 3writetext $6c, $484f + closetext + 2jump $4de4 +; 0xbce3f + +UnknownScript_0xbce3f: ; 0xbce3f + 3writetext $6c, $486f + closetext + loadmovesprites + end +; 0xbce46 + +UnknownScript_0xbce46: ; 0xbce46 + 3writetext $6c, $488c + closetext + loadmovesprites + end +; 0xbce4d + +UnknownScript_0xbce4d: ; 0xbce4d + 3writetext $6c, $48ad + closetext + loadmovesprites + end +; 0xbce54 + + +MenuDataHeader_0xbce54: ; 0xbce54 + db $40 ; flags + db 04, 00 ; start coords + db 11, 15 ; end coords + dw MenuData2_0xbce5c + db 1 ; default option +; 0xbce5c + +MenuData2_0xbce5c: ; 0xbce5c + db $80 ; flags + db 3 ; items + db " 50 : ¥1000@" + db "500 : ¥10000@" + db "CANCEL@" +; 0xbce7f + + +UnknownScript_0xbce7f: ; 0xbce7f + faceplayer + loadfont + special $0059 + if_greater_than $32, UnknownScript_0xbce9a + if_greater_than $96, UnknownScript_0xbce93 + 3writetext $6c, $492a + closetext + loadmovesprites + end +; 0xbce93 + +UnknownScript_0xbce93: ; 0xbce93 + 3writetext $6c, $4954 + closetext + loadmovesprites + end +; 0xbce9a + +UnknownScript_0xbce9a: ; 0xbce9a + 3writetext $6c, $4989 + closetext + loadmovesprites + end +; 0xbcea1 + +MovementData_0xbcea1: ; bcea1 + step_right + step_down + turn_head_up + step_end +; bcea5 + +UnusedPhoneScript: ; 0xbcea5 + 3writetext BANK(UnusedPhoneText), UnusedPhoneText + end + +MomPhoneScript: ; 0xbceaa + checkbit1 $0040 + iftrue .bcec5 + checkbit1 $0041 ; if dude talked to you, then you left home without talking to mom + iftrue MomPhoneLectureScript + checkbit1 $001f + iftrue MomPhoneNoGymQuestScript + checkbit1 $001a + iftrue MomPhoneNoPokedexScript + 2jump MomPhoneNoPokemonScript + +.bcec5 ; 0xbcec5 + checkbit1 $0007 + iftrue MomPhoneHangUpScript + 3writetext BANK(MomPhoneGreetingText), MomPhoneGreetingText + keeptextopen + mapnametotext $0 + checkcode $f + if_equal $1, UnknownScript_0xbcee7 + if_equal $2, $4f27 + 2jump UnknownScript_0xbcf2f + +UnknownScript_0xbcedf: ; 0xbcedf + 3writetext $6d, $4021 + keeptextopen + 2jump UnknownScript_0xbcf37 + +UnknownScript_0xbcee7: ; 0xbcee7 + checkcode $c + if_equal GROUP_NEW_BARK_TOWN, .newbark + if_equal GROUP_CHERRYGROVE_CITY, .cherrygrove + if_equal GROUP_VIOLET_CITY, .violet + if_equal GROUP_AZALEA_TOWN, .azalea + if_equal GROUP_GOLDENROD_CITY, .goldenrod + 3writetext BANK(MomPhoneGenericAreaText), MomPhoneGenericAreaText + keeptextopen + 2jump UnknownScript_0xbcf37 + +.newbark ; 0xbcf05 + 3writetext BANK(MomPhoneNewBarkText), MomPhoneNewBarkText + keeptextopen + 2jump UnknownScript_0xbcf37 + +.cherrygrove ; 0xbcf0d + 3writetext BANK(MomPhoneCherrygroveText), MomPhoneCherrygroveText + keeptextopen + 2jump UnknownScript_0xbcf37 + +.violet ; 0xbcf15 + displaylocation $7 ; sprout tower + 3call $3, UnknownScript_0xbcedf +.azalea ; 0xbcf1b + displaylocation $d ; slowpoke well + 3call $3, UnknownScript_0xbcedf +.goldenrod ; 0xbcf21 + displaylocation $11 ; radio tower + 3call $3, UnknownScript_0xbcedf + 3writetext $6d, $411c + keeptextopen + 2jump UnknownScript_0xbcf37 + +UnknownScript_0xbcf2f: ; 0xbcf2f + 3writetext $6d, $4150 + keeptextopen + 2jump UnknownScript_0xbcf37 + +UnknownScript_0xbcf37: ; 0xbcf37 + checkbit2 $0008 + iffalse UnknownScript_0xbcf49 + checkmoney $1, 0 + if_equal $0, UnknownScript_0xbcf55 + 2jump UnknownScript_0xbcf63 + +UnknownScript_0xbcf49: ; 0xbcf49 + checkmoney $1, 0 + if_equal $0, UnknownScript_0xbcf79 + 2jump UnknownScript_0xbcf6e + +UnknownScript_0xbcf55: ; 0xbcf55 + readmoney $1, $0 + 3writetext $6d, $41a7 + yesorno + iftrue MomPhoneSaveMoneyScript + 2jump MomPhoneWontSaveMoneyScript + +UnknownScript_0xbcf63: ; 0xbcf63 + 3writetext $6d, $41ea + yesorno + iftrue MomPhoneSaveMoneyScript + 2jump MomPhoneWontSaveMoneyScript + +UnknownScript_0xbcf6e: ; 0xbcf6e + 3writetext $6d, $420d + yesorno + iftrue MomPhoneSaveMoneyScript + 2jump MomPhoneWontSaveMoneyScript + +UnknownScript_0xbcf79: ; 0xbcf79 + readmoney $1, $0 + 3writetext $6d, $4249 + yesorno + iftrue MomPhoneSaveMoneyScript + 2jump MomPhoneWontSaveMoneyScript + +MomPhoneSaveMoneyScript: ; 0xbcf87 + setbit2 $0008 + 3writetext $6d, $4289 + keeptextopen + 2jump MomPhoneHangUpScript + +MomPhoneWontSaveMoneyScript: ; 0xbcf92 + clearbit2 $0008 + 3writetext BANK(MomPhoneWontSaveMoneyText), MomPhoneWontSaveMoneyText + keeptextopen + 2jump MomPhoneHangUpScript + +MomPhoneHangUpScript: ; 0xbcf9d + 3writetext BANK(MomPhoneHangUpText), MomPhoneHangUpText + end + +MomPhoneNoPokemonScript: ; 0xbcfa2 + 3writetext BANK(MomPhoneNoPokemonText), MomPhoneNoPokemonText + end + +MomPhoneNoPokedexScript: ; 0xbcfa7 + 3writetext BANK(MomPhoneNoPokedexText), MomPhoneNoPokedexText + end + +MomPhoneNoGymQuestScript: ; 0xbcfac + 3writetext BANK(MomPhoneNoGymQuestText), MomPhoneNoGymQuestText + end + +MomPhoneLectureScript: ; 0xbcfb1 + setbit1 $0040 + setbit2 $0009 + specialphonecall $0000 + 3writetext BANK(MomPhoneLectureText), MomPhoneLectureText + yesorno + iftrue MomPhoneSaveMoneyScript + 2jump MomPhoneWontSaveMoneyScript + +BillPhoneScript1: ; 0xbcfc5 + checktime $2 + iftrue .daygreet + checktime $4 + iftrue .nitegreet + 3writetext BANK(BillPhoneMornGreetingText), BillPhoneMornGreetingText + keeptextopen + 2jump .main + +.daygreet ; 0xbcfd7 + 3writetext BANK(BillPhoneDayGreetingText), BillPhoneDayGreetingText + keeptextopen + 2jump .main + +.nitegreet ; 0xbcfdf + 3writetext BANK(BillPhoneNiteGreetingText), BillPhoneNiteGreetingText + keeptextopen + 2jump .main + +.main ; 0xbcfe7 + 3writetext BANK(BillPhoneGeneriText), BillPhoneGeneriText + keeptextopen + checkcode $10 + RAM2MEM $0 + if_equal $0, .full + if_greater_than $6, .nearlyfull + 3writetext BANK(BillPhoneNotFullText), BillPhoneNotFullText + end + +.nearlyfull ; 0xbcffd + 3writetext BANK(BillPhoneNearlyFullText), BillPhoneNearlyFullText + end + +.full ; 0xbd002 + 3writetext BANK(BillPhoneFullText), BillPhoneFullText + end + +BillPhoneScript2: ; 0xbd007 + 3writetext BANK(BillPhoneNewlyFullText), BillPhoneNewlyFullText + closetext + end + +ElmPhoneScript1: ; 0xbd00d + checkcode $14 + if_equal $1, .pokerus + checkbit1 $0055 + iftrue .discovery + checkbit1 $002d + iffalse .next + checkbit1 $0054 + iftrue .egghatched +.next + checkbit1 $002d + iftrue .eggunhatched + checkbit1 $0701 + iftrue .assistant + checkbit1 $001f + iftrue .checkingegg + checkbit1 $0043 + iftrue .stolen + checkbit1 $001e + iftrue .sawmrpokemon + 3writetext BANK(ElmPhoneStartText), ElmPhoneStartText + end + +.sawmrpokemon ; 0xbd048 + 3writetext BANK(ElmPhoneSawMrPokemonText), ElmPhoneSawMrPokemonText + end + +.stolen ; 0xbd04d + 3writetext BANK(ElmPhonePokemonStolenText), ElmPhonePokemonStolenText + end + +.checkingegg ; 0xbd052 + 3writetext BANK(ElmPhoneCheckingEggText), ElmPhoneCheckingEggText + end + +.assistant ; 0xbd057 + 3writetext BANK(ElmPhoneAssistantText), ElmPhoneAssistantText + end + +.eggunhatched ; 0xbd05c + 3writetext BANK(ElmPhoneEggUnhatchedText), ElmPhoneEggUnhatchedText + end + +.egghatched ; 0xbd061 + 3writetext BANK(ElmPhoneEggHatchedText), ElmPhoneEggHatchedText + setbit1 $0077 + end + +.discovery ; 0xbd069 + random $2 + if_equal $0, .nextdiscovery + 3writetext BANK(ElmPhoneDiscovery1Text), ElmPhoneDiscovery1Text + end + +.nextdiscovery ; 0xbd074 + 3writetext BANK(ElmPhoneDiscovery2Text), ElmPhoneDiscovery2Text + end + +.pokerus ; 0xbd079 + 3writetext BANK(ElmPhonePokerusText), ElmPhonePokerusText + specialphonecall $0000 + end + +ElmPhoneScript2: ; 0xbd081 + checkcode $14 + if_equal $2, .disaster + if_equal $3, .assistant + if_equal $4, .rocket + if_equal $5, .gift + if_equal $8, .gift + 3writetext BANK(ElmPhonePokerusText), ElmPhonePokerusText + specialphonecall $0000 + end + +.disaster ; 0xbd09f + 3writetext BANK(ElmPhoneDisasterText), ElmPhoneDisasterText + specialphonecall $0000 + setbit1 $0043 + end + +.assistant ; 0xbd0aa + 3writetext BANK(ElmPhoneEggAssistantText), ElmPhoneEggAssistantText + specialphonecall $0000 + clearbit1 $0700 + setbit1 $0701 + end + +.rocket ; 0xbd0b8 + 3writetext BANK(ElmPhoneRocketText), ElmPhoneRocketText + specialphonecall $0000 + end + +.gift ; 0xbd0c0 + 3writetext BANK(ElmPhoneGiftText), ElmPhoneGiftText + specialphonecall $0000 + end + +.unused ; 0xbd0c8 + 3writetext BANK(ElmPhoneUnusedText), ElmPhoneUnusedText + specialphonecall $0000 + end +; bd0d0 + diff --git a/engine/text.asm b/engine/text.asm deleted file mode 100644 index 4f39a95df..000000000 --- a/engine/text.asm +++ /dev/null @@ -1,1230 +0,0 @@ -ClearBox: ; fb6 -; Fill a c*b box at hl with blank tiles. - - ld a, " " -.y - push bc - push hl -.x - ld [hli], a - dec c - jr nz, .x - pop hl - ld bc, 20 ; screen width - add hl, bc - pop bc - dec b - jr nz, .y - ret -; fc8 - - -ClearTileMap: ; fc8 -; Fill TileMap with blank tiles. - - ld hl, TileMap - ld a, " " - ld bc, 360 ; screen dimensions 20*18 - call ByteFill - -; We aren't done if the LCD is on. - ld a, [rLCDC] - bit 7, a - ret z - jp WaitBGMap -; fdb - - -Functionfdb: ; fdb - ld a, $7 - ld hl, AttrMap - ld bc, $0168 - call ByteFill - jr ClearTileMap -; fe8 - - - -TextBox: ; fe8 -; Draw a text box width c height b at hl -; Dimensions do not include the border. - push bc - push hl - call TextBoxBorder - pop hl - pop bc - jr TextBoxPalette -; ff1 - - -TextBoxBorder: ; ff1 - -; Top - push hl - ld a, "┌" - ld [hli], a - inc a ; "─" - call NPlaceChar - inc a ; "┐" - ld [hl], a - -; Middle - pop hl - ld de, 20 ; screen width - add hl, de -.PlaceRow - push hl - ld a, "│" - ld [hli], a - ld a, " " - call NPlaceChar - ld [hl], "│" - pop hl - ld de, 20 ; screen width - add hl, de - dec b - jr nz, .PlaceRow - -; Bottom - ld a, "└" - ld [hli], a - ld a, "─" - call NPlaceChar - ld [hl], "┘" - - ret -; 101e - - -NPlaceChar: ; 101e -; Place char a c times - ld d,c -.loop - ld [hli],a - dec d - jr nz, .loop - ret -; 1024 - - -TextBoxPalette: ; 1024 -; Fill text box width c height b at hl with pal 7 - ld de, AttrMap - TileMap - add hl, de - inc b - inc b - inc c - inc c - ld a, 7 ; pal -.gotoy - push bc - push hl -.gotox - ld [hli], a - dec c - jr nz, .gotox - pop hl - ld de, 20 ; screen width - add hl, de - pop bc - dec b - jr nz, .gotoy - ret -; 103e - - -SpeechTextBox: ; 103e -; Standard textbox. - hlcoord 0, 12 - ld b, 4 ; height - ld c, 18 ; screen width - 2 (border) - jp TextBox -; 1048 - -UnknownText_0x1048: ; 1048 - db $0, "ゲームフりーク!", $57 -; 1052 - -Function1052: ; 1052 - ld hl, .text_1056 - ret -.text_1056 - db "@" -; 1057 - - -PrintText: ; 1057 - call Function106c -Function105a: ; 105a - push hl - hlcoord 1, 14 - ld bc, 18 + 3<<8 - call ClearBox - pop hl - -PrintTextBoxText: ; 1065 - bccoord 1, 14 - call Function13e5 - ret -; 106c - - -Function106c: ; 106c - push hl - call SpeechTextBox - call Function1ad2 - call Function321c - pop hl - ret -; 1078 - - - -PlaceString: ; 1078 - push hl - -PlaceNextChar: ; 1079 - ld a, [de] - cp "@" - jr nz, CheckDict - ld b, h - ld c, l - pop hl - ret - pop de - -NextChar: ; 1083 - inc de - jp PlaceNextChar - -CheckDict: ; 1087 - cp $15 - jp z, Function117b - cp $4f - jp z, Char4F - cp $4e - jp z, Function12a7 - cp $16 - jp z, Function12b9 - and a - jp z, Function1383 - cp $4c - jp z, $1337 - cp $4b - jp z, Char4B - cp $51 ; Player name - jp z, Function12f2 - cp $49 - jp z, Function1186 - cp $52 ; Mother name - jp z, Function118d - cp $53 - jp z, Function1194 - cp $35 - jp z, Function11e8 - cp $36 - jp z, Function11ef - cp $37 - jp z, Function11f6 - cp $38 - jp z, Function119b - cp $39 - jp z, Function11a2 - cp $54 - jp z, Function11c5 - cp $5b - jp z, Function11b7 - cp $5e - jp z, Function11be - cp $5c - jp z, Function11b0 - cp $5d - jp z, Function11a9 - cp $23 - jp z, Function11cc - cp $22 - jp z, Function12b0 - cp $55 - jp z, Char55 - cp $56 - jp z, Function11d3 - cp $57 - jp z, $137c - cp $58 - jp z, Function135a - cp $4a - jp z, Function11da - cp $24 - jp z, Function11e1 - cp $25 - jp z, NextChar - cp $1f - jr nz, .asm_1122 - ld a, $7f -.asm_1122 - cp $5f - jp z, Char5F - cp $59 - jp z, Function11fd - cp $5a - jp z, Char5D - cp $3f - jp z, $121b - cp $14 - jp z, $1252 - cp $e4 - jr z, .asm_1174 ; 0x113d $35 - cp $e5 - jr z, .asm_1174 ; 0x1141 $31 - jr .asm_114c ; 0x1143 $7 - ld b, a - call Function13c6 - jp NextChar -.asm_114c - cp $60 - jr nc, .asm_1174 ; 0x114e $24 - cp $40 - jr nc, .asm_1165 ; 0x1152 $11 - cp $20 - jr nc, .asm_115c ; 0x1156 $4 - add $80 - jr .asm_115e ; 0x115a $2 -.asm_115c - add $90 -.asm_115e - ld b, $e5 - call Function13c6 - jr .asm_1174 ; 0x1163 $f -.asm_1165 - cp $44 - jr nc, .asm_116d ; 0x1167 $4 - add $59 - jr .asm_116f ; 0x116b $2 -.asm_116d - add $86 -.asm_116f - ld b, $e4 - call Function13c6 -.asm_1174 - ld [hli], a - call PrintLetterDelay - jp NextChar -; 0x117b - - -Function117b: ; 117b - ld c, l - ld b, h - ld a, $5f - ld hl, $7036 - rst FarCall - jp PlaceNextChar -; 1186 - -Function1186: ; 1186 - push de - ld de, MomsName - jp $126a -; 118d - -Function118d: ; 118d - push de - ld de, PlayerName - jp $126a -; 1194 - -Function1194: ; 1194 - push de - ld de, RivalName - jp $126a -; 119b - -Function119b: ; 119b - push de - ld de, RedsName - jp $126a -; 11a2 - -Function11a2: ; 11a2 - push de - ld de, GreensName - jp $126a -; 11a9 - -Function11a9: ; 11a9 - push de - ld de, Char5DText - jp $126a -; 11b0 - -Function11b0: ; 11b0 - push de - ld de, Char5CText - jp $126a -; 11b7 - -Function11b7: ; 11b7 - push de - ld de, Char5BText - jp $126a -; 11be - -Function11be: ; 11be - push de - ld de, Char5EText - jp $126a -; 11c5 - -Function11c5: ; 11c5 - push de - ld de, Char54Text - jp $126a -; 11cc - -Function11cc: ; 11cc - push de - ld de, Char23Text - jp $126a -; 11d3 - -Function11d3: ; 11d3 - push de - ld de, $1292 - jp $126a -; 11da - -Function11da: ; 11da - push de - ld de, Char4AText - jp $126a -; 11e1 - -Function11e1: ; 11e1 - push de - ld de, Char24Text - jp $126a -; 11e8 - -Function11e8: ; 11e8 - push de - ld de, Char37Text - jp $126a -; 11ef - -Function11ef: ; 11ef - push de - ld de, Char37Text - jp $126a -; 11f6 - -Function11f6: ; 11f6 - push de - ld de, Char37Text - jp $126a -; 11fd - - -Function11fd: ; 11fd - ld a, [hBattleTurn] - xor $1 - jr Function1205 -; 1203 - -Char5D: ; 1203 - ld a, [hBattleTurn] -; 1205 - -Function1205: ; 1205 - push de - and a - jr nz, .asm_120e ; 0x1207 $5 - ld de, BattleMonNick - jr .asm_126a ; 0x120c $5c -.asm_120e - ld de, Char5AText ; Enemy - call PlaceString - ld h, b - ld l, c - ld de, EnemyMonNick - jr .asm_126a ; 0x1219 $4f - push de - ld a, [InLinkBattle] - and a - jr nz, .linkbattle - ld a, [TrainerClass] - cp $9 - jr z, .asm_1248 ; 0x1227 $1f - cp $2a - jr z, .asm_1248 ; 0x122b $1b - ld de, $c656 - call PlaceString - ld h, b - ld l, c - ld de, String12a2 - call PlaceString - push bc - ld hl, $5939 - ld a, $e - rst FarCall - pop hl - ld de, StringBuffer1 - jr .asm_126a ; 0x1246 $22 -.asm_1248 - ld de, RivalName - jr .asm_126a ; 0x124b $1d -.linkbattle - ld de, $c656 - jr .asm_126a ; 0x1250 $18 - push de - ld de, PlayerName - call PlaceString - ld h, b - ld l, c - ld a, [PlayerGender] - bit 0, a - ld de, String12a5 - jr z, .asm_126a ; 0x1263 $5 - ld de, String12a6 - jr .asm_126a ; 0x1268 $0 -.asm_126a - call PlaceString - ld h, b - ld l, c - pop de - jp NextChar -; 0x1273 - -Char5CText: ; 1273 - db "TM@" -Char5DText: ; 1276 - db "TRAINER@" -Char5BText: ; 127e - db "PC@" -Char5EText: ; 1281 - db "ROCKET@" -Char54Text: ; 1288 - db "POKé@" -Char23Text: ; 128d - db "こうげき@" -Char56Text:; 1292 - db "……@" -Char5AText: ; 1295 - db "Enemy @" -Char4AText: ; 129c - db $e1, $e2, "@" ; PK MN -Char24Text: ; 129f - db $70, $71, "@" ; PO KE -String12a2: ; 12a2 - db " @" -Char35Text: -Char36Text: -Char37Text: ; 12a4 - db "@" -String12a5: ; 12a5 - db "@" -String12a6: ; 12a6 - db "@" -; 12a7 - -Function12a7: ; 12a7 - pop hl - ld bc, $0028 - add hl, bc - push hl - jp NextChar -; 12b0 - -Function12b0: ; 12b0 - pop hl - ld bc, $0014 - add hl, bc - push hl - jp NextChar -; 12b9 - -Function12b9: ; 12b9 - pop hl - push de - ld bc, $3b60 - add hl, bc - ld de, $ffec - ld c, $1 -.asm_12c4 - ld a, h - and a - jr nz, .asm_12cd - ld a, l - cp $14 - jr c, .asm_12d1 - -.asm_12cd - add hl, de - inc c - jr .asm_12c4 - -.asm_12d1 - ld hl, TileMap - ld de, $0014 - ld a, c -.asm_12d8 - and a - jr z, .asm_12df - add hl, de - dec a - jr .asm_12d8 - -.asm_12df - pop de - inc de - ld a, [de] - ld c, a - ld b, $0 - add hl, bc - push hl - jp NextChar -; 12ea - - -Char4F: ; 12ea - pop hl - hlcoord 1, 16 - push hl - jp NextChar -; 0x12f2 - -Function12f2: ; 12f2 - push de - ld a, [InLinkBattle] - cp $3 - jr z, .asm_1301 - cp $4 - jr z, .asm_1301 - call Function13c7 - -.asm_1301 - call Function13b6 - call Functionaaf - ld hl, $c5b9 - ld bc, $0312 - call ClearBox - call Function13cd - ld c, $14 - call DelayFrames - ld hl, $c5b9 - pop de - jp NextChar -; 131f - - -Char4B: ; 131f - ld a, [InLinkBattle] - or a - jr nz, .asm_1328 - call Function13c7 - -.asm_1328 - call Function13b6 - - push de - call Functionaaf - pop de - - ld a, [InLinkBattle] - or a - call z, Function13cd - - push de - call Function138c - call Function138c - hlcoord 1, 16 - pop de - jp NextChar -; 1345 - - -Char55: ; 1345 - push de - ld de, Text_1354 - ld b, h - ld c, l - call PlaceString - ld h, b - ld l, c - pop de - jp NextChar -; 1354 - -Text_1354: ; 1354 - db $4b, "@" -; 1356 - - -Char5F: ; 1356 -; ends a Pokédex entry - ld [hl], "." - pop hl - ret -; 135a - -Function135a: ; 135a - ld a, [InLinkBattle] - cp $3 - jr z, .asm_1368 - cp $4 - jr z, .asm_1368 - call Function13c7 - -.asm_1368 - call Function13b6 - call Functionaaf - ld a, [InLinkBattle] - cp $3 - jr z, .asm_137c - cp $4 - jr z, .asm_137c - call Function13cd - -.asm_137c - pop hl - ld de, .string_1382 - dec de - ret - -.string_1382 - db "@" -; 1383 - -Function1383: ; 1383 - ld a, $e6 - ld [hli], a - call PrintLetterDelay - jp NextChar -; 138c - -Function138c: ; 138c - ld hl, $c5b9 - ld de, $c5a5 - ld a, $3 -.asm_1394 - push af - ld c, $12 -.asm_1397 - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .asm_1397 - inc de - inc de - inc hl - inc hl - pop af - dec a - jr nz, .asm_1394 - ld hl, $c5e1 - ld a, $7f - ld bc, $0012 - call ByteFill - ld c, $5 - call DelayFrames - ret -; 13b6 - -Function13b6: ; 13b6 - push bc - ld a, [hOAMUpdate] - push af - ld a, $1 - ld [hOAMUpdate], a - call WaitBGMap - pop af - ld [hOAMUpdate], a - pop bc - ret -; 13c6 - -Function13c6: ; 13c6 - ret -; 13c7 - -Function13c7: ; 13c7 - ld a, $ee - ld [$c606], a - ret -; 13cd - -Function13cd: ; 13cd - ld a, [$c605] - ld [$c606], a - ret -; 13d4 - -Function13d4: ; 13d4 - ld b, a - ld a, [hROMBank] - push af - ld a, b - rst Bankswitch - - call PlaceString - pop af - rst Bankswitch - - ret -; 13e0 - -Function13e0: ; 13e0 - ld hl, $13e4 - ret - -.string_13e4 - db "@" -; 13e5 - - -Function13e5: ; 13e5 - ld a, [$cfcf] - push af - set 1, a - ld [$cfcf], a - call Function13f6 - pop af - ld [$cfcf], a - ret -; 13f6 - -Function13f6: ; 13f6 -.asm_13f6 - ld a, [hli] - cp "@" - ret z - call Function13ff - jr .asm_13f6 -; 13ff - -Function13ff: ; 13ff - push hl - push bc - ld c, a - ld b, 0 - ld hl, TextCommands - add hl, bc - add hl, bc - ld e, [hl] - inc hl - ld d, [hl] - pop bc - pop hl - -; jp de - push de - ret -; 1410 - -TextCommands: ; 1410 - dw Text_00 - dw Text_01 - dw Text_02 - dw Text_03 - dw Text_04 - dw Text_05 - dw Text_06 - dw Text_07 - dw Text_08 - dw Text_09 - dw Text_0A - dw Text_PlaySound ; $0b - dw Text_0C - dw Text_0D - dw Text_PlaySound ; $0e - dw Text_PlaySound ; $0f - dw Text_PlaySound ; $10 - dw Text_PlaySound ; $11 - dw Text_PlaySound ; $12 - dw Text_PlaySound ; $13 - dw Text_14 - dw Text_15 - dw Text_16 -; 143e - -Text_00: ; 143e -; TX -; write text until "@" -; [$00]["...@"] - - ld d, h - ld e, l - ld h, b - ld l, c - call PlaceString - ld h, d - ld l, e - inc hl - ret -; 1449 - -Text_01: ; 1449 -; TX_RAM -; write text from a ram address -; little endian -; [$01][addr] - - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - push hl - ld h, b - ld l, c - call PlaceString - pop hl - ret -; 1455 - -Text_16: ; 1455 -; TX_FAR -; write text from a different bank -; little endian -; [$16][addr][bank] - - ld a, [hROMBank] - push af - - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - - ld [hROMBank], a - ld [MBC3RomBank], a - - push hl - ld h, d - ld l, e - call Function13f6 - pop hl - - pop af - ld [hROMBank], a - ld [MBC3RomBank], a - ret -; 1470 - -Text_02: ; 1470 -; TX_NUM -; write bcdnumber from address, typically ram -; little endian -; [$02][addr][flags] -; flags: see PrintBCDNumber - - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - push hl - ld h, b - ld l, c - ld c, a - call PrintBCDNumber - ld b, h - ld c, l - pop hl - ret -; 1480 - -Text_03: ; 1480 -; TX_MOVE -; move to a new tile -; little endian -; [$03][tileaddr] - - ld a, [hli] - ld [$d0e6], a - ld c, a - ld a, [hli] - ld [$d0e7], a - ld b, a - ret -; 148b - -Text_04: ; 148b -; TX_BOX -; draw a box -; little endian -; [$04][tileaddr][height][width] - - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld b, a - ld a, [hli] - ld c, a - push hl - ld h, d - ld l, e - call TextBox - pop hl - ret -; 149b - -Text_05: ; 149b -; TX_LOW -; write text at (1,16) -; [$05] - - bccoord 1, 16 - ret -; 149f - -Text_06:: ; 149f -; TX_WAITBUTTON -; wait for button press -; show arrow -; [06] - - ld a, [InLinkBattle] - cp $3 - jp z, Text_0D - cp $4 - jp z, Text_0D - push hl - call Function13c7 - push bc - call Functionaaf - pop bc - call Function13cd - pop hl - ret -; 14ba - -Text_07: ; 14ba - push hl - call Function13cd - call Function138c - call Function138c - pop hl - bccoord 1, 16 - ret -; 14c9 - -Text_08: ; 14c9 -; TX_ASM - -; rom only? - bit 7, h - jr nz, .asm_14ce - jp [hl] - -.asm_14ce - ld a, "@" - ld [hl], a - ret -; 14d2 - -Text_09: ; 14d2 - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - push hl - ld h, b - ld l, c - ld b, a - and $f - ld c, a - ld a, b - and $f0 - swap a - set 6, a - ld b, a - call PrintNum - ld b, h - ld c, l - pop hl - ret -; 14ed - -Text_0A: ; 14ed - push hl - push bc - call GetJoypadPublic - ld a, [hJoyDown] - and BUTTON_A | BUTTON_B - jr nz, .asm_14fd - ld c, 30 - call DelayFrames - -.asm_14fd - pop bc - pop hl - ret -; 1500 - -Text_PlaySound:: ; 1500 -; chars: -; $0b, $0e, $0f, $10, $11, $12, $13 -; see TextSFX - - push bc - dec hl - ld a, [hli] - ld b, a - push hl - ld hl, TextSFX -.asm_1508 - ld a, [hli] - cp $ff - jr z, .asm_151f - cp b - jr z, .asm_1514 - inc hl - inc hl - jr .asm_1508 - -.asm_1514 - push de - ld e, [hl] - inc hl - ld d, [hl] - call StartSFX - call WaitSFX - pop de - -.asm_151f - pop hl - pop bc - ret -; 1522 - -Function1522: ; 1522 - push de - ld e, [hl] - inc hl - ld d, [hl] - call Function37ce - pop de - pop hl - pop bc - ret -; 152d - -TextSFX: ; 152d - dbw $0b, SFX_DEX_FANFARE_50_79 - dbw $12, SFX_FANFARE - dbw $0e, SFX_DEX_FANFARE_20_49 - dbw $0f, SFX_ITEM - dbw $10, SFX_CAUGHT_MON - dbw $11, SFX_DEX_FANFARE_80_109 - dbw $13, SFX_SLOT_MACHINE_START - db $ff ; end -; 1543 - -Text_0C: ; 1543 - ld a, [hli] - ld d, a - push hl - ld h, b - ld l, c -.asm_1548 - push de - ld a, "…" - ld [hli], a - call GetJoypadPublic - ld a, [hJoyDown] - and BUTTON_A | BUTTON_B - jr nz, .asm_155a - ld c, 10 - call DelayFrames -.asm_155a - pop de - dec d - jr nz, .asm_1548 - ld b, h - ld c, l - pop hl - ret -; 1562 - -Text_0D: ; 1562 -; wait for key down -; display arrow - push hl - push bc - call Functionaaf - pop bc - pop hl - ret -; 156a - -Text_14: ; 156a -; TX_PREDEF -; [$14][id] - - ld a, [hli] - push hl - ld e, a - ld d, 0 - ld hl, $4000 - add hl, de - add hl, de - ld a, $9 - call GetFarHalfword - ld d, h - ld e, l - ld h, b - ld l, c - call PlaceString - pop hl - ret -; 1582 - -Text_15: ; 1582 -; TX_DAY - - call GetWeekday - push hl - push bc - ld c, a - ld b, 0 - ld hl, .Days - add hl, bc - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld d, h - ld e, l - pop hl - call PlaceString - ld h, b - ld l, c - ld de, .Day - call PlaceString - pop hl - ret -; 15a2 - -.Days ; 15a2 - dw .Sun - dw .Mon - dw .Tues - dw .Wednes - dw .Thurs - dw .Fri - dw .Satur - -.Sun db "SUN@" -.Mon db "MON@" -.Tues db "TUES@" -.Wednes db "WEDNES@" -.Thurs db "THURS@" -.Fri db "FRI@" -.Satur db "SATUR@" -.Day db "DAY@" -; 15d8 - diff --git a/engine/time.asm b/engine/time.asm deleted file mode 100644 index fff52b173..000000000 --- a/engine/time.asm +++ /dev/null @@ -1,311 +0,0 @@ -; Functions relating to the timer interrupt and the real-time-clock. - - -AskTimer: ; 591 - push af - ld a, [$ffe9] - and a - jr z, .asm_59a - call Timer - -.asm_59a - pop af - reti -; 59c - - -LatchClock: ; 59c -; latch clock counter data - ld a, 0 - ld [MBC3LatchClock], a - ld a, 1 - ld [MBC3LatchClock], a - ret -; 5a7 - - -UpdateTime: ; 5a7 - call GetClock - call FixDays - call FixTime - callba GetTimeOfDay - ret -; 5b7 - - -GetClock: ; 5b7 -; store clock data in hRTCDayHi-hRTCSeconds - -; enable clock r/w - ld a, SRAM_ENABLE - ld [MBC3SRamEnable], a - -; clock data is 'backwards' in hram - - call LatchClock - ld hl, MBC3SRamBank - ld de, MBC3RTC - - ld [hl], RTC_S - ld a, [de] - and $3f - ld [hRTCSeconds], a - - ld [hl], RTC_M - ld a, [de] - and $3f - ld [hRTCMinutes], a - - ld [hl], RTC_H - ld a, [de] - and $1f - ld [hRTCHours], a - - ld [hl], RTC_DL - ld a, [de] - ld [hRTCDayLo], a - - ld [hl], RTC_DH - ld a, [de] - ld [hRTCDayHi], a - -; unlatch clock / disable clock r/w - call CloseSRAM - ret -; 5e8 - - -FixDays: ; 5e8 -; fix day count -; mod by 140 - -; check if day count > 255 (bit 8 set) - ld a, [hRTCDayHi] ; DH - bit 0, a - jr z, .daylo -; reset dh (bit 8) - res 0, a - ld [hRTCDayHi], a ; DH - -; mod 140 -; mod twice since bit 8 (DH) was set - ld a, [hRTCDayLo] ; DL -.modh - sub 140 - jr nc, .modh -.modl - sub 140 - jr nc, .modl - add 140 - -; update dl - ld [hRTCDayLo], a ; DL - -; unknown output - ld a, $40 ; %1000000 - jr .set - -.daylo -; quit if fewer than 140 days have passed - ld a, [hRTCDayLo] ; DL - cp 140 - jr c, .quit - -; mod 140 -.mod - sub 140 - jr nc, .mod - add 140 - -; update dl - ld [hRTCDayLo], a ; DL - -; unknown output - ld a, $20 ; %100000 - -.set -; update clock with modded day value - push af - call SetClock - pop af - scf - ret - -.quit - xor a - ret -; 61d - - -FixTime: ; 61d -; add ingame time (set at newgame) to current time -; day hr min sec -; store time in CurDay, hHours, hMinutes, hSeconds - -; second - ld a, [hRTCSeconds] ; S - ld c, a - ld a, [StartSecond] - add c - sub 60 - jr nc, .updatesec - add 60 -.updatesec - ld [hSeconds], a - -; minute - ccf ; carry is set, so turn it off - ld a, [hRTCMinutes] ; M - ld c, a - ld a, [StartMinute] - adc c - sub 60 - jr nc, .updatemin - add 60 -.updatemin - ld [hMinutes], a - -; hour - ccf ; carry is set, so turn it off - ld a, [hRTCHours] ; H - ld c, a - ld a, [StartHour] - adc c - sub 24 - jr nc, .updatehr - add 24 -.updatehr - ld [hHours], a - -; day - ccf ; carry is set, so turn it off - ld a, [hRTCDayLo] ; DL - ld c, a - ld a, [StartDay] - adc c - ld [CurDay], a - ret -; 658 - -Function658: ; 658 - xor a - ld [StringBuffer2], a - ld a, $0 - ld [$d089], a - jr .asm_677 - - call UpdateTime - ld a, [hHours] - ld [$d087], a - ld a, [hMinutes] - ld [$d088], a - ld a, [hSeconds] - ld [$d089], a - jr .asm_677 - -.asm_677 - ld a, $5 - ld hl, $40ed - rst FarCall - ret -; 67e - - - -Function67e: ; 67e - call Function685 - call SetClock - ret -; 685 - -Function685: ; 685 - xor a - ld [hRTCSeconds], a - ld [hRTCMinutes], a - ld [hRTCHours], a - ld [hRTCDayLo], a - ld [hRTCDayHi], a - ret -; 691 - - -SetClock: ; 691 -; set clock data from hram - -; enable clock r/w - ld a, SRAM_ENABLE - ld [MBC3SRamEnable], a - -; set clock data -; stored 'backwards' in hram - - call LatchClock - ld hl, MBC3SRamBank - ld de, MBC3RTC - -; seems to be a halt check that got partially commented out -; this block is totally pointless - ld [hl], RTC_DH - ld a, [de] - bit 6, a ; halt - ld [de], a - -; seconds - ld [hl], RTC_S - ld a, [hRTCSeconds] - ld [de], a -; minutes - ld [hl], RTC_M - ld a, [hRTCMinutes] - ld [de], a -; hours - ld [hl], RTC_H - ld a, [hRTCHours] - ld [de], a -; day lo - ld [hl], RTC_DL - ld a, [hRTCDayLo] - ld [de], a -; day hi - ld [hl], RTC_DH - ld a, [hRTCDayHi] - res 6, a ; make sure timer is active - ld [de], a - -; cleanup - call CloseSRAM ; unlatch clock, disable clock r/w - ret -; 6c4 - - -Function6c4: ; 6c4 - xor a - push af - ld a, $0 - call GetSRAMBank - pop af - ld [$ac60], a - call CloseSRAM - ret -; 6d3 - -Function6d3: ; 6d3 - ld hl, $ac60 - push af - ld a, $0 - call GetSRAMBank - pop af - or [hl] - ld [hl], a - call CloseSRAM - ret -; 6e3 - -Function6e3: ; 6e3 - ld a, $0 - call GetSRAMBank - ld a, [$ac60] - call CloseSRAM - ret -; 6ef - diff --git a/engine/vblank.asm b/engine/vblank.asm deleted file mode 100644 index 71114964e..000000000 --- a/engine/vblank.asm +++ /dev/null @@ -1,541 +0,0 @@ -; VBlank is the interrupt responsible for updating VRAM. - -; In Pokemon Crystal, VBlank has been hijacked to act as the -; main loop. After time-sensitive graphics operations have been -; performed, joypad input and sound functions are executed. - -; This prevents the display and audio output from lagging. - - -VBlank: ; 283 - push af - push bc - push de - push hl - -; get vblank type - ld a, [$ff9e] - and $7 - -; get fn pointer - ld e, a - ld d, $0 - ld hl, .VBlanks - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - -; down to business - call _hl_ - -; since this is called once per frame - call GameTimer - - pop hl - pop de - pop bc - pop af - reti -; 2a1 - -.VBlanks ; 2a1 - dw VBlank0 ; 0 - dw VBlank1 ; 1 - dw VBlank2 ; 2 - dw VBlank3 ; 3 - dw VBlank4 ; 4 - dw VBlank5 ; 5 - dw VBlank6 ; 6 - dw VBlank0 ; 7 -; 2b1 - - -VBlank0: ; 2b1 -; normal operation - -; rng -; scx, scy, wy, wx -; bg map buffer -; palettes -; dma transfer -; bg map -; tiles -; oam -; joypad -; sound - -; inc frame counter - ld hl, $ff9b - inc [hl] - -; advance rng - ld a, [rDIV] - ld b, a - ld a, [hRandomAdd] - adc b - ld [hRandomAdd], a - - ld a, [rDIV] - ld b, a - ld a, [hRandomSub] - sbc b - ld [hRandomSub], a - -; save bank - ld a, [hROMBank] ; current bank - ld [$ff8a], a - -; scroll x - ld a, [hSCX] - ld [rSCX], a -; scroll y - ld a, [hSCY] - ld [rSCY], a -; window y - ld a, [hWY] - ld [rWY], a -; window x + 7 - ld a, [hWX] - ld [rWX], a - -; some time management is in order -; only have time for one of these during vblank - -; bg map buffer has priority - call UpdateBGMapBuffer - jr c, .doneframeaction - -; then pals - call UpdatePalsIfCGB - jr c, .doneframeaction - -; dma transfer - call DMATransfer - jr c, .doneframeaction - -; bg map - call UpdateBGMap - -; these have their own timing checks - call Serve2bppRequest - call Serve1bppRequest - call AnimateTileset - -.doneframeaction -; oam update off? - ld a, [hOAMUpdate] - and a - jr nz, .vblankoccurred - -; update oam by dma transfer - call hPushOAM -; @PushOAM: -; ld a, Sprites >> 8 -; ld [rDMA], a -; ld a, $28 -; .loop -; dec a -; jr nz, .loop -; ret - - -; vblank-sensitive operations are done - -.vblankoccurred -; tell other fns vblank happened - xor a - ld [VBlankOccurred], a - -; dec OverworldDelay until 0 - ld a, [OverworldDelay] - and a - jr z, .textdelay - dec a - ld [OverworldDelay], a - -.textdelay -; dec text delay counter until 0 - ld a, [TextDelayFrames] - and a - jr z, .joypad - dec a - ld [TextDelayFrames], a - -.joypad - call Joypad - -; update sound - ld a, BANK(UpdateSound) - rst Bankswitch ; bankswitch - call UpdateSound - ld a, [$ff8a] - rst Bankswitch ; restore bank - -; - ld a, [hSeconds] - ld [$ffe3], a - - ret -; 325 - - -VBlank2: ; 325 -; sound only - -; save bank - ld a, [hROMBank] - ld [$ff8a], a - -; update sound - ld a, BANK(UpdateSound) - rst Bankswitch ; bankswitch - call UpdateSound - -; restore bank - ld a, [$ff8a] - rst Bankswitch - -; tell other fns vblank happened - xor a - ld [VBlankOccurred], a - ret -; 337 - - -VBlank1: ; 337 -; scx, scy -; palettes -; bg map -; tiles -; oam -; sound / lcd stat - -; save bank - ld a, [hROMBank] - ld [$ff8a], a - -; scroll x - ld a, [hSCX] - ld [rSCX], a - -; scroll y - ld a, [hSCY] - ld [rSCY], a - -; time-sensitive fns - call UpdatePals - jr c, .vblankoccurred - -; these have their own timing checks - call UpdateBGMap - call Serve2bppRequest@VBlank -; update oam by dma transfer - call hPushOAM -; @PushOAM: -; ld a, Sprites >> 8 -; ld [rDMA], a -; ld a, $28 -; .loop -; dec a -; jr nz, .loop -; ret - -.vblankoccurred -; tell other fns vblank happened - xor a - ld [VBlankOccurred], a - -; get requested ints - ld a, [rIF] - ld b, a -; discard requested ints - xor a - ld [rIF], a -; enable lcd stat - ld a, %10 ; lcd stat - ld [rIE], a -; rerequest serial int if applicable (still disabled) -; request lcd stat - ld a, b - and %1000 ; serial - or %10 ; lcd stat - ld [rIF], a - - ei -; update sound - ld a, BANK(UpdateSound) - rst Bankswitch ; bankswitch - call UpdateSound -; restore bank - ld a, [$ff8a] - rst Bankswitch - di - -; get requested ints - ld a, [rIF] - ld b, a -; discard requested ints - xor a - ld [rIF], a -; enable ints besides joypad - ld a, %1111 ; serial timer lcdstat vblank - ld [rIE], a -; rerequest ints - ld a, b - ld [rIF], a - ret -; 37f - - -UpdatePals: ; 37f -; update pals for either dmg or cgb - -; check cgb - ld a, [hCGB] - and a - jp nz, UpdateCGBPals - -; update gb pals - ld a, [$cfc7] - ld [rBGP], a - - ld a, [$cfc8] - ld [rOBP0], a - - ld a, [$cfc9] - ld [rOBP1], a - - and a - ret -; 396 - - -VBlank3: ; 396 -; scx, scy -; palettes -; bg map -; tiles -; oam -; sound / lcd stat - -; save bank - ld a, [hROMBank] - ld [$ff8a], a - -; scroll x - ld a, [hSCX] - ld [rSCX], a -; scroll y - ld a, [hSCY] - ld [rSCY], a - -; any pals to update? - ld a, [hCGBPalUpdate] - and a - call nz, ForceUpdateCGBPals - jr c, .vblankoccurred -; else - call UpdateBGMap - call Serve2bppRequest@VBlank - -; update oam by dma transfer - call hPushOAM -; @PushOAM: -; ld a, Sprites >> 8 -; ld [rDMA], a -; ld a, $28 -; .loop -; dec a -; jr nz, .loop -; ret - -.vblankoccurred -; tell other fns vblank happened - xor a - ld [VBlankOccurred], a - -; save int flag - ld a, [rIF] - push af -; reset ints - xor a - ld [rIF], a -; force lcdstat int during sound update - ld a, %10 ; lcd stat - ld [rIE], a - ld [rIF], a - - ei -; update sound - ld a, BANK(UpdateSound) - rst Bankswitch ; bankswitch - call UpdateSound -; restore bank - ld a, [$ff8a] - rst Bankswitch - di - -; request lcdstat - ld a, [rIF] - ld b, a -; and any other ints - pop af - or b - ld b, a -; reset ints - xor a - ld [rIF], a -; enable ints besides joypad - ld a, %1111 ; serial timer lcdstat vblank - ld [rIE], a -; request ints - ld a, b - ld [rIF], a - ret -; 3df - - -VBlank4: ; 3df -; bg map -; tiles -; oam -; joypad -; serial -; sound - -; save bank - ld a, [hROMBank] - ld [$ff8a], a - - call UpdateBGMap - call Serve2bppRequest - -; update oam by dma transfer - call hPushOAM -; @PushOAM: -; ld a, Sprites >> 8 -; ld [rDMA], a -; ld a, $28 -; .loop -; dec a -; jr nz, .loop -; ret - -; update joypad - call Joypad - -; tell other fns vblank happened - xor a - ld [VBlankOccurred], a - -; handshake - call AskSerial - -; update sound - ld a, BANK(UpdateSound) - rst Bankswitch ; bankswitch - call UpdateSound -; restore bank - ld a, [$ff8a] - rst Bankswitch - ret -; 400 - - -VBlank5: ; 400 -; scx -; palettes -; bg map -; tiles -; joypad -; - -; save bank - ld a, [hROMBank] - ld [$ff8a], a - -; scroll x - ld a, [hSCX] - ld [rSCX], a - -; if we can update pals, skip this part - call UpdatePalsIfCGB - jr c, .vblankoccurred - - call UpdateBGMap - call Serve2bppRequest - -.vblankoccurred -; tell other fns vblank happened - xor a - ld [VBlankOccurred], a - -; joypad - call Joypad - -; discard requested ints - xor a - ld [rIF], a -; enable lcd stat - ld a, %10 ; lcd stat - ld [rIE], a -; request lcd stat - ld [rIF], a - - ei -; update sound - ld a, BANK(UpdateSound) - rst Bankswitch ; bankswitch - call UpdateSound -; restore bank - ld a, [$ff8a] - rst Bankswitch - di - -; discard requested ints - xor a - ld [rIF], a -; enable ints besides joypad - ld a, %1111 ; serial timer lcdstat vblank - ld [rIE], a - ret -; 436 - - -VBlank6: ; 436 -; palettes -; tiles -; dma transfer -; sound - -; save bank - ld a, [hROMBank] - ld [$ff8a], a - -; inc frame counter - ld hl, $ff9b - inc [hl] - - call UpdateCGBPals - jr c, .vblankoccurred - - call Serve2bppRequest - call Serve1bppRequest - call DMATransfer - -.vblankoccurred -; tell other fns vblank happened - xor a - ld [VBlankOccurred], a - -; update sound - ld a, BANK(UpdateSound) - rst Bankswitch ; bankswitch - call UpdateSound -; restore bank - ld a, [$ff8a] - rst Bankswitch - ret -; 45a diff --git a/engine/video.asm b/engine/video.asm deleted file mode 100644 index 0d0aa272d..000000000 --- a/engine/video.asm +++ /dev/null @@ -1,487 +0,0 @@ -; Functions dealing with VRAM. - -DMATransfer: ; 15d8 -; Return carry if the transfer is completed. - - ld a, [hDMATransfer] - and a - ret z - -; Start transfer - ld [rHDMA5], a - -; Execution is halted until the transfer is complete. - - xor a - ld [hDMATransfer], a - scf - ret -; 15e3 - - -UpdateBGMapBuffer: ; 15e3 -; Copy [$ffdc] 16x8 tiles from BGMapBuffer -; to bg map addresses in BGMapBufferPtrs. - -; [$ffdc] must be even since this is done in pairs. - -; Return carry on success. - - ld a, [hBGMapUpdate] - and a - ret z - - ld a, [rVBK] - push af - ld [hSPBuffer], sp - - ld hl, BGMapBufferPtrs - ld sp, hl - -; We can now pop the addresses of affected spots on the BG Map - - ld hl, BGMapPalBuffer - ld de, BGMapBuffer - - -.next -; Copy a pair of 16x8 blocks (one 16x16 block) - -rept 2 -; Get our BG Map address - pop bc - -; Palettes - ld a, 1 - ld [rVBK], a - - ld a, [hli] - ld [bc], a - inc c - ld a, [hli] - ld [bc], a - dec c - -; Tiles - ld a, 0 - ld [rVBK], a - - ld a, [de] - inc de - ld [bc], a - inc c - ld a, [de] - inc de - ld [bc], a -endr - -; We've done 2 16x8 blocks - ld a, [$ffdc] - dec a - dec a - ld [$ffdc], a - - jr nz, .next - - - ld a, [hSPBuffer] - ld l, a - ld a, [hSPBuffer + 1] - ld h, a - ld sp, hl - - pop af - ld [rVBK], a - - xor a - ld [hBGMapUpdate], a - scf - ret -; 163a - - -WaitTop: ; 163a -; Wait until the top third of the BG Map is being updated. - - ld a, [hBGMapMode] - and a - ret z - - ld a, [hBGMapThird] - and a - jr z, .done - - call DelayFrame - jr WaitTop - -.done - xor a - ld [hBGMapMode], a - ret -; 164c - - -UpdateBGMap: ; 164c -; Update the BG Map, in thirds, from TileMap and AttrMap. - - ld a, [hBGMapMode] - and a - ret z - -; BG Map 0 - dec a ; 1 - jr z, .Tiles - dec a ; 2 - jr z, .Attr - -; BG Map 1 - dec a - - ld a, [hBGMapAddress] - ld l, a - ld a, [hBGMapAddress + 1] - ld h, a - push hl - - xor a - ld [hBGMapAddress], a - ld a, VBGMap1 >> 8 - ld [hBGMapAddress + 1], a - - ld a, [hBGMapMode] - push af - cp 3 - call z, .Tiles - pop af - cp 4 - call z, .Attr - - pop hl - ld a, l - ld [hBGMapAddress], a - ld a, h - ld [hBGMapAddress + 1], a - ret - - -.Attr - ld a, 1 - ld [rVBK], a - - ld hl, AttrMap - call .update - - ld a, 0 - ld [rVBK], a - ret - - -.Tiles - ld hl, TileMap - - -.update - ld [hSPBuffer], sp - -; Which third? - ld a, [hBGMapThird] - and a ; 0 - jr z, .top - dec a ; 1 - jr z, .middle - ; 2 - - -THIRD_HEIGHT EQU SCREEN_HEIGHT / 3 - - -.bottom - ld de, 2 * THIRD_HEIGHT * SCREEN_WIDTH - add hl, de - ld sp, hl - - ld a, [hBGMapAddress + 1] - ld h, a - ld a, [hBGMapAddress] - ld l, a - - ld de, 2 * THIRD_HEIGHT * BG_MAP_WIDTH - add hl, de - -; Next time: top third - xor a - jr .start - - -.middle - ld de, THIRD_HEIGHT * SCREEN_WIDTH - add hl, de - ld sp, hl - - ld a, [hBGMapAddress + 1] - ld h, a - ld a, [hBGMapAddress] - ld l, a - - ld de, THIRD_HEIGHT * BG_MAP_WIDTH - add hl, de - -; Next time: bottom third - ld a, 2 - jr .start - - -.top - ld sp, hl - - ld a, [hBGMapAddress + 1] - ld h, a - ld a, [hBGMapAddress] - ld l, a - -; Next time: middle third - ld a, 1 - - -.start -; Which third to update next time - ld [hBGMapThird], a - -; Rows of tiles in a third - ld a, SCREEN_HEIGHT / 3 - -; Discrepancy between TileMap and BGMap - ld bc, BG_MAP_WIDTH - (SCREEN_WIDTH - 1) - - -.row -; Copy a row of 20 tiles -rept SCREEN_WIDTH / 2 - 1 - pop de - ld [hl], e - inc l - ld [hl], d - inc l -endr - pop de - ld [hl], e - inc l - ld [hl], d - - add hl, bc - dec a - jr nz, .row - - - ld a, [hSPBuffer] - ld l, a - ld a, [hSPBuffer + 1] - ld h, a - ld sp, hl - ret -; 170a - - -Serve1bppRequest: ; 170a -; Only call during the first fifth of VBlank - - ld a, [Requested1bpp] - and a - ret z - -; Back out if we're too far into VBlank - ld a, [rLY] - cp 144 - ret c - cp 146 - ret nc - -; Copy [Requested1bpp] 1bpp tiles from [Requested1bppSource] to [Requested1bppDest] - - ld [hSPBuffer], sp - -; Source - ld hl, Requested1bppSource - ld a, [hli] - ld h, [hl] - ld l, a - ld sp, hl - -; Destination - ld hl, Requested1bppDest - ld a, [hli] - ld h, [hl] - ld l, a - -; # tiles to copy - ld a, [Requested1bpp] - ld b, a - - xor a - ld [Requested1bpp], a - -.next - -rept 3 - pop de - ld [hl], e - inc l - ld [hl], e - inc l - ld [hl], d - inc l - ld [hl], d - inc l -endr - pop de - ld [hl], e - inc l - ld [hl], e - inc l - ld [hl], d - inc l - ld [hl], d - - inc hl - dec b - jr nz, .next - - - ld a, l - ld [Requested1bppDest], a - ld a, h - ld [Requested1bppDest + 1], a - - ld [Requested1bppSource], sp - - ld a, [hSPBuffer] - ld l, a - ld a, [hSPBuffer + 1] - ld h, a - ld sp, hl - ret -; 1769 - - -Serve2bppRequest: ; 1769 -; Only call during the first fifth of VBlank - - ld a, [Requested2bpp] - and a - ret z - -; Back out if we're too far into VBlank - ld a, [rLY] - cp 144 - ret c - cp 146 - ret nc - jr _Serve2bppRequest - - -Serve2bppRequest@VBlank: ; 1778 - - ld a, [Requested2bpp] - and a - ret z - -_Serve2bppRequest: ; 177d -; Copy [Requested2bpp] 2bpp tiles from [Requested2bppSource] to [Requested2bppDest] - - ld [hSPBuffer], sp - -; Source - ld hl, Requested2bppSource - ld a, [hli] - ld h, [hl] - ld l, a - ld sp, hl - -; Destination - ld hl, Requested2bppDest - ld a, [hli] - ld h, [hl] - ld l, a - -; # tiles to copy - ld a, [Requested2bpp] - ld b, a - - xor a - ld [Requested2bpp], a - -.next - -rept 7 - pop de - ld [hl], e - inc l - ld [hl], d - inc l -endr - pop de - ld [hl], e - inc l - ld [hl], d - - inc hl - dec b - jr nz, .next - - - ld a, l - ld [Requested2bppDest], a - ld a, h - ld [Requested2bppDest + 1], a - - ld [Requested2bppSource], sp - - ld a, [hSPBuffer] - ld l, a - ld a, [hSPBuffer + 1] - ld h, a - ld sp, hl - ret -; 17d3 - - -AnimateTileset: ; 17d3 -; Only call during the first fifth of VBlank - - ld a, [$ffde] - and a - ret z - -; Back out if we're too far into VBlank - ld a, [rLY] - cp 144 - ret c - cp 151 - ret nc - - ld a, [hROMBank] - push af - ld a, BANK(_AnimateTileset) - rst Bankswitch - - ld a, [rSVBK] - push af - ld a, 1 - ld [rSVBK], a - - ld a, [rVBK] - push af - ld a, 0 - ld [rVBK], a - - call _AnimateTileset - - pop af - ld [rVBK], a - pop af - ld [rSVBK], a - pop af - rst Bankswitch - ret -; 17ff - |