diff options
Diffstat (limited to 'home.asm')
-rw-r--r-- | home.asm | 11602 |
1 files changed, 11602 insertions, 0 deletions
diff --git a/home.asm b/home.asm new file mode 100644 index 00000000..3c11a9df --- /dev/null +++ b/home.asm @@ -0,0 +1,11602 @@ +INCLUDE "includes.asm" + +SECTION "NULL", ROM0[0] +NULL:: + +INCLUDE "rst.asm" +INCLUDE "interrupts.asm" + +SECTION "Header", ROM0[$100] + +Start:: + nop + jp _Start + +SECTION "Home", ROM0[$150] +Reset:: + push af ; 150 + push bc ; 151 + push de ; 152 + push hl ; 153 + ldh a, [hMenuReturn] ; 154 + and $7 ; 156 + ld e, a ; 158 + ld d, $0 ; 159 + ld hl, $170 ; 15b + add hl, de ; 15e + add hl, de ; 15f + ld a, [hli] ; 160 + ld h, [hl] ; 161 + ld l, a ; 162 + ld de, .return ; 163 + push de ; 166 + jp [hl] ; 167 +.return + call Function1efa ; 168 + pop hl ; 16b + pop de ; 16c + pop bc ; 16d + pop af ; 16e + reti ; 16f +; 170 + +Function170:: + add b ; 170 + ld bc, $1f4 ; 171 + or b ; 174 + ld [bc], a ; 175 + call nz, Function5502 ; 176 + ld [bc], a ; 179 + ld a, b ; 17a + ld [bc], a ; 17b + add b ; 17c + ld bc, $180 ; 17d + ld hl, $ff9d ; 180 + inc [hl] ; 183 + ldh a, [rDIV] ; 184 + ld b, a ; 186 + ldh a, [hRandomAdd] ; 187 + adc b ; 189 + ldh [hRandomAdd], a ; 18a + ldh a, [rDIV] ; 18c + ld b, a ; 18e + ldh a, [$ffe4] ; 18f + sbc b ; 191 + ldh [$ffe4], a ; 192 + ldh a, [hROMBank] ; 194 + ld [$d155], a ; 196 + ldh a, [$ffd1] ; 199 + ldh [$ff43], a ; 19b + ldh a, [$ffd2] ; 19d + ldh [$ff42], a ; 19f + ldh a, [$ffd4] ; 1a1 + ldh [$ff4a], a ; 1a3 + ldh a, [$ffd3] ; 1a5 + ldh [$ff4b], a ; 1a7 + call Function1458 ; 1a9 + jr c, Function1c2 ; 1ac + call Functionbdf ; 1ae + jr c, Function1c2 ; 1b1 + call Function14bb ; 1b3 + call Function15d0 ; 1b6 + call Function1579 ; 1b9 + call Function162b ; 1bc + call Function1642 ; 1bf + ldh a, [$ffda] ; 1c2 + and a ; 1c4 + jr nz, Function1ca ; 1c5 + call Functionff80 ; 1c7 + xor a ; 1ca + ld [$ceea], a ; 1cb + ld a, [$cee8] ; 1ce + and a ; 1d1 + jr z, Function1d8 ; 1d2 + dec a ; 1d4 + ld [$cee8], a ; 1d5 + ld a, [$cee9] ; 1d8 + and a ; 1db + jr z, Function1e2 ; 1dc + dec a ; 1de + ld [$cee9], a ; 1df + call Function8e6 ; 1e2 + ld a, $3a ; 1e5 + rst Bankswitch ; 1e7 + call Function405c ; 1e8 + ld a, [$d155] ; 1eb + rst Bankswitch ; 1ee + ldh a, [$ff9a] ; 1ef + ldh [$ffe5], a ; 1f1 + ret ; 1f3 +; 1f4 + +Function1f4:: + ldh a, [hROMBank] ; 1f4 + ld [$d155], a ; 1f6 + ldh a, [$ffd1] ; 1f9 + ldh [$ff43], a ; 1fb + ldh a, [$ffd2] ; 1fd + ldh [$ff42], a ; 1ff + call Function23e ; 201 + jr c, Function20f ; 204 + call Function14bb ; 206 + call Function15d0 ; 209 + call Functionff80 ; 20c + ldh a, [$ffc8] ; 20f + or a ; 211 + jr z, Function219 ; 212 + ld c, a ; 214 + ld a, [$c700] ; 215 + ld [$ff00+c], a ; 218 + xor a ; 219 + ld [$ceea], a ; 21a + ldh a, [$ff0f] ; 21d + ld b, a ; 21f + xor a ; 220 + ldh [$ff0f], a ; 221 + ld a, $2 ; 223 + ldh [$ffff], a ; 225 + ld a, b ; 227 + and $8 ; 228 + or $2 ; 22a + ldh [$ff0f], a ; 22c + ei ; 22e + ld a, $3a ; 22f + rst Bankswitch ; 231 + call Function405c ; 232 + ld a, [$d155] ; 235 + rst Bankswitch ; 238 + ld a, $1f ; 239 + ldh [$ffff], a ; 23b + ret ; 23d +; 23e + +Function23e:: + ldh a, [$ffe8] ; 23e + and a ; 240 + jp nz, Functionbe3 ; 241 + ld a, [$cf43] ; 244 + ldh [$ff47], a ; 247 + ld a, [$cf44] ; 249 + ldh [$ff48], a ; 24c + ld a, [$cf45] ; 24e + ldh [$ff49], a ; 251 + and a ; 253 + ret ; 254 +; 255 + +Function255:: + ldh a, [hROMBank] ; 255 + ld [$d155], a ; 257 + call Function14bb ; 25a + call Function15d0 ; 25d + call Functionff80 ; 260 + call Function8e6 ; 263 + xor a ; 266 + ld [$ceea], a ; 267 + call Function1ebf ; 26a + ld a, $3a ; 26d + rst Bankswitch ; 26f + call Function405c ; 270 + ld a, [$d155] ; 273 + rst Bankswitch ; 276 + ret ; 277 +; 278 + +Function278:: + ldh a, [hROMBank] ; 278 + ld [$d155], a ; 27a + ldh a, [$ffd1] ; 27d + ldh [$ff43], a ; 27f + call Functionbdf ; 281 + jr c, Function28c ; 284 + call Function14bb ; 286 + call Function15d0 ; 289 + xor a ; 28c + ld [$ceea], a ; 28d + call Function8e6 ; 290 + xor a ; 293 + ldh [$ff0f], a ; 294 + ld a, $2 ; 296 + ldh [$ffff], a ; 298 + ldh [$ff0f], a ; 29a + ei ; 29c + ld a, $3a ; 29d + rst Bankswitch ; 29f + call Function405c ; 2a0 + ld a, [$d155] ; 2a3 + rst Bankswitch ; 2a6 + di ; 2a7 + xor a ; 2a8 + ldh [$ff0f], a ; 2a9 + ld a, $1f ; 2ab + ldh [$ffff], a ; 2ad + ret ; 2af +; 2b0 + +Function2b0:: + ldh a, [hROMBank] ; 2b0 + ld [$d155], a ; 2b2 + ld a, $3a ; 2b5 + rst Bankswitch ; 2b7 + call Function405c ; 2b8 + ld a, [$d155] ; 2bb + rst Bankswitch ; 2be + xor a ; 2bf + ld [$ceea], a ; 2c0 + ret ; 2c3 +; 2c4 + +Function2c4:: + ldh a, [$ff9d] ; 2c4 + inc a ; 2c6 + ldh [$ff9d], a ; 2c7 + ldh a, [rDIV] ; 2c9 + ld b, a ; 2cb + ldh a, [hRandomAdd] ; 2cc + adc b ; 2ce + ldh [hRandomAdd], a ; 2cf + ldh a, [rDIV] ; 2d1 + ld b, a ; 2d3 + ldh a, [$ffe4] ; 2d4 + sbc b ; 2d6 + ldh [$ffe4], a ; 2d7 + call Function8e6 ; 2d9 + ldh a, [hROMBank] ; 2dc + ld [$d155], a ; 2de + ldh a, [$ffd1] ; 2e1 + ldh [$ff43], a ; 2e3 + ldh a, [$ffd2] ; 2e5 + ldh [$ff42], a ; 2e7 + ldh a, [$ffd4] ; 2e9 + ldh [$ff4a], a ; 2eb + ldh a, [$ffd3] ; 2ed + ldh [$ff4b], a ; 2ef + call Function14bb ; 2f1 + call Function1458 ; 2f4 + call Function15d0 ; 2f7 + call Function1579 ; 2fa + call Function162b ; 2fd + call Functionff80 ; 300 + xor a ; 303 + ld [$ceea], a ; 304 + ld a, [$cee9] ; 307 + and a ; 30a + jr z, Function311 ; 30b + dec a ; 30d + ld [$cee9], a ; 30e + xor a ; 311 + ldh [$ff0f], a ; 312 + ld a, $2 ; 314 + ldh [$ffff], a ; 316 + ldh [$ff0f], a ; 318 + ei ; 31a + ld a, $3a ; 31b + rst Bankswitch ; 31d + call Function405c ; 31e + ld a, [$d155] ; 321 + rst Bankswitch ; 324 + di ; 325 + xor a ; 326 + ldh [$ff0f], a ; 327 + ld a, $1f ; 329 + ldh [$ffff], a ; 32b + ret ; 32d +; 32e + +Function32e:: + ld a, $1 ; 32e + ld [$ceea], a ; 330 + halt ; 333 + nop ; 334 + ld a, [$ceea] ; 335 + and a ; 338 + jr nz, Function333 ; 339 + ret ; 33b +; 33c + +Function33c:: + call Function32e ; 33c + dec c ; 33f + jr nz, Function33c ; 340 + ret ; 342 +; 343 + +Function343:: + ld a, [$c1cd] ; 343 + cp $0 ; 346 + ret z ; 348 + call Function467 ; 349 + ld a, [$cfe5] ; 34c + bit 0, a ; 34f + ret z ; 351 + ld hl, $4366 ; 352 + ld a, $23 ; 355 + rst FarCall ; 357 + ret ; 358 +; 359 + +Function359:: + ld hl, $4397 ; 359 + ld a, $23 ; 35c + rst FarCall ; 35e + ret ; 35f +; 360 + +Function360:: + ld a, [$d568] ; 360 + ld b, a ; 363 + ld hl, $40c ; 364 + ld a, l ; 367 + sub b ; 368 + ld l, a ; 369 + jr nc, Function36d ; 36a + dec h ; 36c + ld a, [hli] ; 36d + ldh [$ff47], a ; 36e + ld a, [hli] ; 370 + ldh [$ff48], a ; 371 + ld a, [hli] ; 373 + ldh [$ff49], a ; 374 + ret ; 376 +; 377 + +Function377:: + ldh a, [$ffe8] ; 377 + and a ; 379 + jr z, Function383 ; 37a + ld hl, $3eb ; 37c + ld b, $4 ; 37f + jr Function39b ; 381 +; 383 + +Function383:: + ld hl, $403 ; 383 + ld b, $4 ; 386 + jr Function39b ; 388 +; 38a + +Function38a:: + ldh a, [$ffe8] ; 38a + and a ; 38c + jr z, Function396 ; 38d + ld hl, $3fa ; 38f + ld b, $3 ; 392 + jr Function39b ; 394 +; 396 + +Function396:: + ld hl, $412 ; 396 + ld b, $3 ; 399 + push de ; 39b + ld a, [hli] ; 39c + call Functionc61 ; 39d + ld a, [hli] ; 3a0 + ld e, a ; 3a1 + ld a, [hli] ; 3a2 + ld d, a ; 3a3 + call Functionc83 ; 3a4 + ld c, $8 ; 3a7 + call Function33c ; 3a9 + pop de ; 3ac + dec b ; 3ad + jr nz, Function39b ; 3ae + ret ; 3b0 +; 3b1 + +Function3b1:: + ldh a, [$ffe8] ; 3b1 + and a ; 3b3 + jr z, Function3bd ; 3b4 + ld hl, $3f6 ; 3b6 + ld b, $4 ; 3b9 + jr Function3d5 ; 3bb +; 3bd + +Function3bd:: + ld hl, $40e ; 3bd + ld b, $4 ; 3c0 + jr Function3d5 ; 3c2 +; 3c4 + +Function3c4:: + ldh a, [$ffe8] ; 3c4 + and a ; 3c6 + jr z, Function3d0 ; 3c7 + ld hl, $3ff ; 3c9 + ld b, $3 ; 3cc + jr Function3d5 ; 3ce +; 3d0 + +Function3d0:: + ld hl, $417 ; 3d0 + ld b, $3 ; 3d3 + push de ; 3d5 + ld a, [hld] ; 3d6 + ld d, a ; 3d7 + ld a, [hld] ; 3d8 + ld e, a ; 3d9 + call Functionc83 ; 3da + ld a, [hld] ; 3dd + call Functionc61 ; 3de + ld c, $8 ; 3e1 + call Function33c ; 3e3 + pop de ; 3e6 + dec b ; 3e7 + jr nz, Function3d5 ; 3e8 + ret ; 3ea +; 3eb + +Function3eb:: + rst $38 ; 3eb + rst $38 ; 3ec + rst $38 ; 3ed + cp $fe ; 3ee + cp $f9 ; 3f0 + ld sp, hl ; 3f2 + ld sp, hl ; 3f3 + - ; 3f4 + - ; 3f5 + - ; 3f6 + - ; 3f7 + - ; 3f8 + - ; 3f9 + sub b ; 3fa + sub b ; 3fb + sub b ; 3fc + ld b, b ; 3fd + ld b, b ; 3fe + ld b, b ; 3ff + nop ; 400 + nop ; 401 + nop ; 402 + rst $38 ; 403 + rst $38 ; 404 + rst $38 ; 405 + cp $fe ; 406 + ld hl, [sp+$f9] ; 408 + - ; 40a + - ; 40b + - ; 40c + ret nc ; 40d + ldh [$ffe4], a ; 40e + ret nc ; 410 + ldh [$ff90], a ; 411 + add b ; 413 + sub b ; 414 + ld b, b ; 415 + ld b, b ; 416 + ld b, b ; 417 + nop ; 418 + nop ; 419 + nop ; 41a + push af ; 41b + ldh a, [$ffc8] ; 41c + and a ; 41e + jr z, Function430 ; 41f + push hl ; 421 + ldh a, [$ff44] ; 422 + ld l, a ; 424 + ld h, $c7 ; 425 + ld h, [hl] ; 427 + ldh a, [$ffc8] ; 428 + ld l, a ; 42a + ld a, h ; 42b + ld h, $ff ; 42c + ld [hl], a ; 42e + pop hl ; 42f + pop af ; 430 + reti ; 431 +; 432 + +Function432:: + ldh a, [$ff40] ; 432 + bit 7, a ; 434 + ret z ; 436 + xor a ; 437 + ldh [$ff0f], a ; 438 + ldh a, [$ffff] ; 43a + ld b, a ; 43c + res 0, a ; 43d + ldh [$ffff], a ; 43f + ldh a, [$ff44] ; 441 + cp $91 ; 443 + jr nz, Function441 ; 445 + ldh a, [$ff40] ; 447 + and $7f ; 449 + ldh [$ff40], a ; 44b + xor a ; 44d + ldh [$ff0f], a ; 44e + ld a, b ; 450 + ldh [$ffff], a ; 451 + ret ; 453 +; 454 + +Function454:: + ldh a, [$ff40] ; 454 + set 7, a ; 456 + ldh [$ff40], a ; 458 + ret ; 45a +; 45b + +Function45b:: + reti ; 45b + ld a, $0 ; 45c + ld [MBC3LatchClock], a ; 45e + ld a, $1 ; 461 + ld [MBC3LatchClock], a ; 463 + ret ; 466 +; 467 + +Function467:: + call Function477 ; 467 + call Function4a8 ; 46a + call Function4de ; 46d + ld a, $5 ; 470 + ld hl, $4032 ; 472 + rst FarCall ; 475 + ret ; 476 +; 477 + +Function477:: + ld a, $a ; 477 + ld [MBC3SRamEnable], a ; 479 + call Function45c ; 47c + ld hl, $4000 ; 47f + ld de, $a000 ; 482 + ld [hl], $8 ; 485 + ld a, [de] ; 487 + and $3f ; 488 + ldh [$ff93], a ; 48a + ld [hl], $9 ; 48c + ld a, [de] ; 48e + and $3f ; 48f + ldh [$ff92], a ; 491 + ld [hl], $a ; 493 + ld a, [de] ; 495 + and $1f ; 496 + ldh [$ff91], a ; 498 + ld [hl], $b ; 49a + ld a, [de] ; 49c + ldh [$ff90], a ; 49d + ld [hl], $c ; 49f + ld a, [de] ; 4a1 + ldh [$ff8f], a ; 4a2 + call CloseSRAM ; 4a4 + ret ; 4a7 +; 4a8 + +Function4a8:: + ldh a, [$ff8f] ; 4a8 + bit 0, a ; 4aa + jr z, Function4c4 ; 4ac + res 0, a ; 4ae + ldh [$ff8f], a ; 4b0 + ldh a, [$ff90] ; 4b2 + sub a, $8c ; 4b4 + jr nc, Function4b4 ; 4b6 + sub a, $8c ; 4b8 + jr nc, Function4b8 ; 4ba + add a, $8c ; 4bc + ldh [$ff90], a ; 4be + ld a, $40 ; 4c0 + jr Function4d4 ; 4c2 +; 4c4 + +Function4c4:: + ldh a, [$ff90] ; 4c4 + cp $8c ; 4c6 + jr c, Function4db ; 4c8 + sub a, $8c ; 4ca + jr nc, Function4ca ; 4cc + add a, $8c ; 4ce + ldh [$ff90], a ; 4d0 + ld a, $20 ; 4d2 + push af ; 4d4 + call Function552 ; 4d5 + pop af ; 4d8 + scf ; 4d9 + ret ; 4da +; 4db + +Function4db:: + ccf ; 4db + xor a ; 4dc + ret ; 4dd +; 4de + +Function4de:: + ldh a, [$ff93] ; 4de + ld c, a ; 4e0 + ld a, [$d1df] ; 4e1 + add c ; 4e4 + sub a, $3c ; 4e5 + jr nc, Function4eb ; 4e7 + add a, $3c ; 4e9 + ldh [$ff9a], a ; 4eb + ccf ; 4ed + ldh a, [$ff92] ; 4ee + ld c, a ; 4f0 + ld a, [$d1de] ; 4f1 + adc c ; 4f4 + sub a, $3c ; 4f5 + jr nc, Function4fb ; 4f7 + add a, $3c ; 4f9 + ldh [$ff98], a ; 4fb + ccf ; 4fd + ldh a, [$ff91] ; 4fe + ld c, a ; 500 + ld a, [$d1dd] ; 501 + adc c ; 504 + sub a, $18 ; 505 + jr nc, Function50b ; 507 + add a, $18 ; 509 + ldh [$ff96], a ; 50b + ccf ; 50d + ldh a, [$ff90] ; 50e + ld c, a ; 510 + ld a, [$d1dc] ; 511 + adc c ; 514 + ld [$d1f2], a ; 515 + ret ; 518 +; 519 + +Function519:: + xor a ; 519 + ld [$cf7e], a ; 51a + ld a, $0 ; 51d + ld [$cf81], a ; 51f + jr Function538 ; 522 +; 524 + +Function524:: + call Function467 ; 524 + ldh a, [$ff96] ; 527 + ld [$cf7f], a ; 529 + ldh a, [$ff98] ; 52c + ld [$cf80], a ; 52e + ldh a, [$ff9a] ; 531 + ld [$cf81], a ; 533 + jr Function538 ; 536 +; 538 + +Function538:: + ld a, $5 ; 538 + ld hl, $40ff ; 53a + rst FarCall ; 53d + ret ; 53e +; 53f + +Function53f:: + call Function546 ; 53f + call Function552 ; 542 + ret ; 545 +; 546 + +Function546:: + xor a ; 546 + ldh [$ff93], a ; 547 + ldh [$ff92], a ; 549 + ldh [$ff91], a ; 54b + ldh [$ff90], a ; 54d + ldh [$ff8f], a ; 54f + ret ; 551 +; 552 + +Function552:: + ld a, $a ; 552 + ld [MBC3SRamEnable], a ; 554 + call Function45c ; 557 + ld hl, $4000 ; 55a + ld de, $a000 ; 55d + ld [hl], $c ; 560 + ld a, [de] ; 562 + bit 6, a ; 563 + ld [de], a ; 565 + ld [hl], $8 ; 566 + ldh a, [$ff93] ; 568 + ld [de], a ; 56a + ld [hl], $9 ; 56b + ldh a, [$ff92] ; 56d + ld [de], a ; 56f + ld [hl], $a ; 570 + ldh a, [$ff91] ; 572 + ld [de], a ; 574 + ld [hl], $b ; 575 + ldh a, [$ff90] ; 577 + ld [de], a ; 579 + ld [hl], $c ; 57a + ldh a, [$ff8f] ; 57c + res 6, a ; 57e + ld [de], a ; 580 + call CloseSRAM ; 581 + ret ; 584 +; 585 + +Function585:: + xor a ; 585 + push af ; 586 + ld a, $0 ; 587 + call OpenSRAM ; 589 + pop af ; 58c + ld [$ac60], a ; 58d + call CloseSRAM ; 590 + ret ; 593 +; 594 + +Function594:: + ld hl, $ac60 ; 594 + push af ; 597 + ld a, $0 ; 598 + call OpenSRAM ; 59a + pop af ; 59d + or [hl] ; 59e + ld [hl], a ; 59f + call CloseSRAM ; 5a0 + ret ; 5a3 +; 5a4 + +Function5a4:: + ld a, $0 ; 5a4 + call OpenSRAM ; 5a6 + ld a, [$ac60] ; 5a9 + call CloseSRAM ; 5ac + ret ; 5af +; 5b0 + +Function5b0:: + call Function3d4f ; 5b0 + xor a ; 5b3 + ldh [$ffe0], a ; 5b4 + call Function3564 ; 5b6 + ei ; 5b9 + ld hl, $d8ba ; 5ba + set 7, [hl] ; 5bd + ld c, $20 ; 5bf + call Function33c ; 5c1 + jr Function5d1 ; 5c4 +; 5c6 + +Function5c6:: + cp $11 ; 5c6 + jr z, Function5cd ; 5c8 + xor a ; 5ca + jr Function5cf ; 5cb +; 5cd + +Function5cd:: + ld a, $1 ; 5cd + ldh [$ffe8], a ; 5cf + di ; 5d1 + xor a ; 5d2 + ldh [$ff0f], a ; 5d3 + ldh [$ffff], a ; 5d5 + ldh [$ff56], a ; 5d7 + ldh [$ff43], a ; 5d9 + ldh [$ff42], a ; 5db + ldh [$ff01], a ; 5dd + ldh [$ff02], a ; 5df + ldh [$ff4b], a ; 5e1 + ldh [$ff4a], a ; 5e3 + ldh [$ff47], a ; 5e5 + ldh [$ff48], a ; 5e7 + ldh [$ff49], a ; 5e9 + ldh [$ff06], a ; 5eb + ldh [$ff07], a ; 5ed + ld [$ceeb], a ; 5ef + ld a, $4 ; 5f2 + ldh [$ff07], a ; 5f4 + ldh a, [$ff44] ; 5f6 + cp $91 ; 5f8 + jr nz, Function5f6 ; 5fa + xor a ; 5fc + ldh [$ff40], a ; 5fd + ld hl, $c000 ; 5ff + ld bc, $2000 ; 602 + ld [hl], $0 ; 605 + inc hl ; 607 + dec bc ; 608 + ld a, b ; 609 + or c ; 60a + jr nz, Function605 ; 60b + ld sp, $dfff ; 60d + call Function68e ; 610 + ldh a, [$ffe8] ; 613 + push af ; 615 + xor a ; 616 + ld hl, $ff80 ; 617 + ld bc, $7f ; 61a + call Function314c ; 61d + pop af ; 620 + ldh [$ffe8], a ; 621 + call Function30ff ; 623 + ld a, $1 ; 626 + rst Bankswitch ; 628 + call Function4032 ; 629 + xor a ; 62c + ldh [$ffe0], a ; 62d + ldh [$ffd1], a ; 62f + ldh [$ffd2], a ; 631 + ldh [$ff00], a ; 633 + ld a, $8 ; 635 + ldh [$ff41], a ; 637 + ld a, $90 ; 639 + ldh [$ffd4], a ; 63b + ldh [$ff4a], a ; 63d + ld a, $7 ; 63f + ldh [$ffd3], a ; 641 + ldh [$ff4b], a ; 643 + ld a, $ff ; 645 + ldh [$ffcd], a ; 647 + ld h, $98 ; 649 + call Function699 ; 64b + ld h, $9c ; 64e + call Function699 ; 650 + ld hl, $5cfd ; 653 + ld a, $2 ; 656 + rst FarCall ; 658 + ld a, $9c ; 659 + ldh [$ffd9], a ; 65b + xor a ; 65d + ldh [$ffd8], a ; 65e + ld a, $5 ; 660 + ld hl, $4089 ; 662 + rst FarCall ; 665 + ld a, $a ; 666 + ld [MBC3SRamEnable], a ; 668 + ld a, $0 ; 66b + ld [MBC3LatchClock], a ; 66d + ld [MBC3SRamEnable], a ; 670 + ld a, $e3 ; 673 + ldh [$ff40], a ; 675 + ld a, $1f ; 677 + ldh [$ffff], a ; 679 + ei ; 67b + call Function32e ; 67c + ld a, $30 ; 67f + call Function2e49 ; 681 + call Function3d4f ; 684 + xor a ; 687 + ld [$c1c0], a ; 688 + jp Function6545 ; 68b +; 68e + +Function68e:: + ld hl, $8000 ; 68e + ld bc, $2000 ; 691 + xor a ; 694 + call Function314c ; 695 + ret ; 698 +; 699 + +Function699:: + ld a, $7f ; 699 + jr Function69e ; 69b +; 69d + +Function69d:: + ld a, l ; 69d + ld de, $400 ; 69e + ld l, e ; 6a1 + ld [hli], a ; 6a2 + dec e ; 6a3 + jr nz, Function6a2 ; 6a4 + dec d ; 6a6 + jr nz, Function6a2 ; 6a7 + ret ; 6a9 +; 6aa + +Function6aa:: + push af ; 6aa + push bc ; 6ab + push de ; 6ac + push hl ; 6ad + ld a, [$c1d3] ; 6ae + bit 0, a ; 6b1 + jr nz, Function6d2 ; 6b3 + ldh a, [$ffcd] ; 6b5 + inc a ; 6b7 + jr z, Function6d7 ; 6b8 + ldh a, [$ff01] ; 6ba + ldh [$ffd0], a ; 6bc + ldh a, [$ffcf] ; 6be + ldh [$ff01], a ; 6c0 + ldh a, [$ffcd] ; 6c2 + cp $2 ; 6c4 + jr z, Function703 ; 6c6 + ld a, $0 ; 6c8 + ldh [$ff02], a ; 6ca + ld a, $80 ; 6cc + ldh [$ff02], a ; 6ce + jr Function703 ; 6d0 +; 6d2 + +Function6d2:: + call Function1eb3 ; 6d2 + jr Function70b ; 6d5 +; 6d7 + +Function6d7:: + ldh a, [$ff01] ; 6d7 + cp $1 ; 6d9 + jr z, Function6e1 ; 6db + cp $2 ; 6dd + jr nz, Function703 ; 6df + ldh [$ffd0], a ; 6e1 + ldh [$ffcd], a ; 6e3 + cp $2 ; 6e5 + jr z, Function700 ; 6e7 + xor a ; 6e9 + ldh [$ff01], a ; 6ea + ld a, $3 ; 6ec + ldh [rDIV], a ; 6ee + ldh a, [rDIV] ; 6f0 + bit 7, a ; 6f2 + jr nz, Function6f0 ; 6f4 + ld a, $0 ; 6f6 + ldh [$ff02], a ; 6f8 + ld a, $80 ; 6fa + ldh [$ff02], a ; 6fc + jr Function703 ; 6fe +; 700 + +Function700:: + xor a ; 700 + ldh [$ff01], a ; 701 + ld a, $1 ; 703 + ldh [$ffcc], a ; 705 + ld a, $fe ; 707 + ldh [$ffcf], a ; 709 + pop hl ; 70b + pop de ; 70c + pop bc ; 70d + pop af ; 70e + reti ; 70f +; 710 + +Function710:: + ld a, $1 ; 710 + ldh [$ffce], a ; 712 + ld a, [hl] ; 714 + ldh [$ffcf], a ; 715 + call Function73b ; 717 + push bc ; 71a + ld b, a ; 71b + inc hl ; 71c + ld a, $30 ; 71d + dec a ; 71f + jr nz, Function71f ; 720 + ldh a, [$ffce] ; 722 + and a ; 724 + ld a, b ; 725 + pop bc ; 726 + jr z, Function733 ; 727 + dec hl ; 729 + cp $fd ; 72a + jr nz, Function714 ; 72c + xor a ; 72e + ldh [$ffce], a ; 72f + jr Function714 ; 731 +; 733 + +Function733:: + ld [de], a ; 733 + inc de ; 734 + dec bc ; 735 + ld a, b ; 736 + or c ; 737 + jr nz, Function714 ; 738 + ret ; 73a +; 73b + +Function73b:: + xor a ; 73b + ldh [$ffcc], a ; 73c + ldh a, [$ffcd] ; 73e + cp $2 ; 740 + jr nz, Function74c ; 742 + ld a, $1 ; 744 + ldh [$ff02], a ; 746 + ld a, $81 ; 748 + ldh [$ff02], a ; 74a + ldh a, [$ffcc] ; 74c + and a ; 74e + jr nz, Function796 ; 74f + ldh a, [$ffcd] ; 751 + cp $1 ; 753 + jr nz, Function771 ; 755 + call Function7dc ; 757 + jr z, Function771 ; 75a + call Function7d6 ; 75c + push hl ; 75f + ld hl, $ce5c ; 760 + inc [hl] ; 763 + jr nz, Function768 ; 764 + dec hl ; 766 + inc [hl] ; 767 + pop hl ; 768 + call Function7dc ; 769 + jr nz, Function74c ; 76c + jp Function7e4 ; 76e +; 771 + +Function771:: + ldh a, [$ffff] ; 771 + and $f ; 773 + cp $8 ; 775 + jr nz, Function74c ; 777 + ld a, [$ce5d] ; 779 + dec a ; 77c + ld [$ce5d], a ; 77d + jr nz, Function74c ; 780 + ld a, [$ce5e] ; 782 + dec a ; 785 + ld [$ce5e], a ; 786 + jr nz, Function74c ; 789 + ldh a, [$ffcd] ; 78b + cp $1 ; 78d + jr z, Function796 ; 78f + ld a, $ff ; 791 + dec a ; 793 + jr nz, Function793 ; 794 + xor a ; 796 + ldh [$ffcc], a ; 797 + ldh a, [$ffff] ; 799 + and $f ; 79b + sub a, $8 ; 79d + jr nz, Function7a9 ; 79f + ld [$ce5d], a ; 7a1 + ld a, $50 ; 7a4 + ld [$ce5e], a ; 7a6 + ldh a, [$ffd0] ; 7a9 + cp $fe ; 7ab + ret nz ; 7ad + call Function7dc ; 7ae + jr z, Function7c4 ; 7b1 + push hl ; 7b3 + ld hl, $ce5c ; 7b4 + ld a, [hl] ; 7b7 + dec a ; 7b8 + ld [hld], a ; 7b9 + inc a ; 7ba + jr nz, Function7be ; 7bb + dec [hl] ; 7bd + pop hl ; 7be + call Function7dc ; 7bf + jr z, Function7e4 ; 7c2 + ldh a, [$ffff] ; 7c4 + and $f ; 7c6 + cp $8 ; 7c8 + ld a, $fe ; 7ca + ret z ; 7cc + ld a, [hl] ; 7cd + ldh [$ffcf], a ; 7ce + call Function32e ; 7d0 + jp Function73b ; 7d3 +; 7d6 + +Function7d6:: + ld a, $f ; 7d6 + dec a ; 7d8 + jr nz, Function7d8 ; 7d9 + ret ; 7db +; 7dc + +Function7dc:: + push hl ; 7dc + ld hl, $ce5b ; 7dd + ld a, [hli] ; 7e0 + or [hl] ; 7e1 + pop hl ; 7e2 + ret ; 7e3 +; 7e4 + +Function7e4:: + dec a ; 7e4 + ld [$ce5b], a ; 7e5 + ld [$ce5c], a ; 7e8 + ret ; 7eb +; 7ec + +Function7ec:: + ld hl, $ce56 ; 7ec + ld de, $ce51 ; 7ef + ld c, $2 ; 7f2 + ld a, $1 ; 7f4 + ldh [$ffce], a ; 7f6 + call Function32e ; 7f8 + ld a, [hl] ; 7fb + ldh [$ffcf], a ; 7fc + call Function73b ; 7fe + ld b, a ; 801 + inc hl ; 802 + ldh a, [$ffce] ; 803 + and a ; 805 + ld a, $0 ; 806 + ldh [$ffce], a ; 808 + jr nz, Function7f8 ; 80a + ld a, b ; 80c + ld [de], a ; 80d + inc de ; 80e + dec c ; 80f + jr nz, Function7f8 ; 810 + ret ; 812 +; 813 + +Function813:: + call Function3158 ; 813 + ld hl, $4000 ; 816 + ld a, $1 ; 819 + rst FarCall ; 81b + call Function82e ; 81c + jp Function3164 ; 81f +; 822 + +Function822:: + call Function3158 ; 822 + ld hl, $4000 ; 825 + ld a, $1 ; 828 + rst FarCall ; 82a + jp Function82e ; 82b +; 82e + +Function82e:: + ld a, $ff ; 82e + ld [$ce52], a ; 830 + call Function872 ; 833 + call Function32e ; 836 + call Function7dc ; 839 + jr z, Function84f ; 83c + push hl ; 83e + ld hl, $ce5c ; 83f + dec [hl] ; 842 + jr nz, Function84e ; 843 + dec hl ; 845 + dec [hl] ; 846 + jr nz, Function84e ; 847 + pop hl ; 849 + xor a ; 84a + jp Function7e4 ; 84b +; 84e + +Function84e:: + pop hl ; 84e + ld a, [$ce52] ; 84f + inc a ; 852 + jr z, Function833 ; 853 + ld b, $a ; 855 + call Function32e ; 857 + call Function872 ; 85a + dec b ; 85d + jr nz, Function857 ; 85e + ld b, $a ; 860 + call Function32e ; 862 + call Function8b9 ; 865 + dec b ; 868 + jr nz, Function862 ; 869 + ld a, [$ce52] ; 86b + ld [$ce51], a ; 86e + ret ; 871 +; 872 + +Function872:: + push bc ; 872 + ld b, $60 ; 873 + ld a, [$d042] ; 875 + cp $1 ; 878 + jr z, Function888 ; 87a + ld b, $60 ; 87c + jr c, Function888 ; 87e + cp $2 ; 880 + ld b, $70 ; 882 + jr z, Function888 ; 884 + ld b, $80 ; 886 + call Function8a4 ; 888 + ld a, [$ce56] ; 88b + add b ; 88e + ldh [$ffcf], a ; 88f + ldh a, [$ffcd] ; 891 + cp $2 ; 893 + jr nz, Function89f ; 895 + ld a, $1 ; 897 + ldh [$ff02], a ; 899 + ld a, $81 ; 89b + ldh [$ff02], a ; 89d + call Function8a4 ; 89f + pop bc ; 8a2 + ret ; 8a3 +; 8a4 + +Function8a4:: + ldh a, [$ffd0] ; 8a4 + ld [$ce51], a ; 8a6 + and $f0 ; 8a9 + cp b ; 8ab + ret nz ; 8ac + xor a ; 8ad + ldh [$ffd0], a ; 8ae + ld a, [$ce51] ; 8b0 + and $f ; 8b3 + ld [$ce52], a ; 8b5 + ret ; 8b8 +; 8b9 + +Function8b9:: + xor a ; 8b9 + ldh [$ffcf], a ; 8ba + ldh a, [$ffcd] ; 8bc + cp $2 ; 8be + ret nz ; 8c0 + ld a, $1 ; 8c1 + ldh [$ff02], a ; 8c3 + ld a, $81 ; 8c5 + ldh [$ff02], a ; 8c7 + ret ; 8c9 +; 8ca + +Function8ca:: + ld a, [$d042] ; 8ca + and a ; 8cd + ret nz ; 8ce + ld a, $2 ; 8cf + ldh [$ff01], a ; 8d1 + xor a ; 8d3 + ldh [$ffd0], a ; 8d4 + ld a, $0 ; 8d6 + ldh [$ff02], a ; 8d8 + ld a, $80 ; 8da + ldh [$ff02], a ; 8dc + ret ; 8de +; 8df + +Function8df:: + reti ; 8df + xor a ; 8e0 + ldh [$ffa9], a ; 8e1 + ldh [$ffaa], a ; 8e3 + ret ; 8e5 +; 8e6 + +Function8e6:: + ld a, [$d8ba] ; 8e6 + and $d0 ; 8e9 + ret nz ; 8eb + ld a, [$c1cc] ; 8ec + and a ; 8ef + ret nz ; 8f0 + ld a, $20 ; 8f1 + ldh [$ff00], a ; 8f3 + ldh a, [$ff00] ; 8f5 + ldh a, [$ff00] ; 8f7 + cpl ; 8f9 + and $f ; 8fa + swap a ; 8fc + ld b, a ; 8fe + ld a, $10 ; 8ff + ldh [$ff00], a ; 901 + ldh a, [$ff00] ; 903 + ldh a, [$ff00] ; 905 + ldh a, [$ff00] ; 907 + ldh a, [$ff00] ; 909 + ldh a, [$ff00] ; 90b + ldh a, [$ff00] ; 90d + cpl ; 90f + and $f ; 910 + or b ; 912 + ld b, a ; 913 + ld a, $30 ; 914 + ldh [$ff00], a ; 916 + ldh a, [$ffa6] ; 918 + ld e, a ; 91a + xor b ; 91b + ld d, a ; 91c + and e ; 91d + ldh [$ffa4], a ; 91e + ld a, d ; 920 + and b ; 921 + ldh [$ffa5], a ; 922 + ld c, a ; 924 + ldh a, [$ffa7] ; 925 + or c ; 927 + ldh [$ffa7], a ; 928 + ld a, b ; 92a + ldh [$ffa6], a ; 92b + and $f ; 92d + cp $f ; 92f + jp z, Function5b0 ; 931 + ret ; 934 +; 935 + +Function935:: + push af ; 935 + push hl ; 936 + push de ; 937 + push bc ; 938 + ld a, [$c1c6] ; 939 + cp $ff ; 93c + jr z, Function958 ; 93e + ldh a, [$ffa6] ; 940 + ld b, a ; 942 + ldh a, [$ffaa] ; 943 + ld e, a ; 945 + xor b ; 946 + ld d, a ; 947 + and e ; 948 + ldh [$ffa8], a ; 949 + ld a, d ; 94b + and b ; 94c + ldh [$ffa9], a ; 94d + ld c, a ; 94f + ld a, b ; 950 + ldh [$ffaa], a ; 951 + pop bc ; 953 + pop de ; 954 + pop hl ; 955 + pop af ; 956 + ret ; 957 +; 958 + +Function958:: + ldh a, [hROMBank] ; 958 + push af ; 95a + ld a, [$c1c9] ; 95b + rst Bankswitch ; 95e + ld hl, $c1c7 ; 95f + ld a, [hli] ; 962 + ld h, [hl] ; 963 + ld l, a ; 964 + ld a, [$c1ca] ; 965 + and a ; 968 + jr z, Function973 ; 969 + dec a ; 96b + ld [$c1ca], a ; 96c + pop af ; 96f + rst Bankswitch ; 970 + jr Function953 ; 971 +; 973 + +Function973:: + ld a, [hli] ; 973 + cp $ff ; 974 + jr z, Function991 ; 976 + ld b, a ; 978 + ld a, [hli] ; 979 + ld [$c1ca], a ; 97a + cp $ff ; 97d + jr nz, Function987 ; 97f + dec hl ; 981 + dec hl ; 982 + ld b, $0 ; 983 + jr Function996 ; 985 +; 987 + +Function987:: + ld a, l ; 987 + ld [$c1c7], a ; 988 + ld a, h ; 98b + ld [$c1c8], a ; 98c + jr Function996 ; 98f +; 991 + +Function991:: + call Function9bb ; 991 + ld b, $0 ; 994 + pop af ; 996 + rst Bankswitch ; 997 + ld a, b ; 998 + ldh [$ffa9], a ; 999 + ldh [$ffaa], a ; 99b + jr Function953 ; 99d +; 99f + +Function99f:: + ld [$c1c9], a ; 99f + ld a, l ; 9a2 + ld [$c1c7], a ; 9a3 + ld a, h ; 9a6 + ld [$c1c8], a ; 9a7 + xor a ; 9aa + ld [$c1ca], a ; 9ab + xor a ; 9ae + ldh [$ffa9], a ; 9af + ldh [$ffa8], a ; 9b1 + ldh [$ffaa], a ; 9b3 + ld a, $ff ; 9b5 + ld [$c1c6], a ; 9b7 + ret ; 9ba +; 9bb + +Function9bb:: + xor a ; 9bb + ld [$c1c9], a ; 9bc + ld [$c1c7], a ; 9bf + ld [$c1c8], a ; 9c2 + ld [$c1ca], a ; 9c5 + ld [$c1c6], a ; 9c8 + ret ; 9cb +; 9cc + +Function9cc:: + call Function32e ; 9cc + push bc ; 9cf + call Functiona08 ; 9d0 + pop bc ; 9d3 + ldh a, [$ffaa] ; 9d4 + cp $46 ; 9d6 + jr z, Function9e5 ; 9d8 + ldh a, [$ffab] ; 9da + and $9 ; 9dc + jr nz, Function9e5 ; 9de + dec c ; 9e0 + jr nz, Function9cc ; 9e1 + and a ; 9e3 + ret ; 9e4 +; 9e5 + +Function9e5:: + scf ; 9e5 + ret ; 9e6 +; 9e7 + +Function9e7:: + call Function32e ; 9e7 + call Function935 ; 9ea + ldh a, [$ffa9] ; 9ed + and $3 ; 9ef + ret nz ; 9f1 + call Function343 ; 9f2 + jr Function9e7 ; 9f5 +; 9f7 + +Function9f7:: + ldh a, [$ffda] ; 9f7 + push af ; 9f9 + ld a, $1 ; 9fa + ldh [$ffda], a ; 9fc + call WaitBGMap ; 9fe + call Function9e7 ; a01 + pop af ; a04 + ldh [$ffda], a ; a05 + ret ; a07 +; a08 + +Functiona08:: + call Function935 ; a08 + ldh a, [$ffac] ; a0b + and a ; a0d + ldh a, [$ffa9] ; a0e + jr z, Functiona14 ; a10 + ldh a, [$ffaa] ; a12 + ldh [$ffab], a ; a14 + ldh a, [$ffa9] ; a16 + and a ; a18 + jr z, Functiona21 ; a19 + ld a, $f ; a1b + ld [$cee9], a ; a1d + ret ; a20 +; a21 + +Functiona21:: + ld a, [$cee9] ; a21 + and a ; a24 + jr z, Functiona2b ; a25 + xor a ; a27 + ldh [$ffab], a ; a28 + ret ; a2a +; a2b + +Functiona2b:: + ld a, $5 ; a2b + ld [$cee9], a ; a2d + ret ; a30 +; a31 + +Functiona31:: + ldh a, [$ffb1] ; a31 + push af ; a33 + ldh a, [$ffb2] ; a34 + push af ; a36 + xor a ; a37 + ldh [$ffb1], a ; a38 + ld a, $6 ; a3a + ldh [$ffb2], a ; a3c + push hl ; a3e + ld hl, $c506 ; a3f + call Functionab6 ; a42 + pop hl ; a45 + call Functiona08 ; a46 + ldh a, [$ffab] ; a49 + and $3 ; a4b + jr z, Functiona3e ; a4d + pop af ; a4f + ldh [$ffb2], a ; a50 + pop af ; a52 + ldh [$ffb1], a ; a53 + ret ; a55 +; a56 + +Functiona56:: + call Functiona08 ; a56 + ldh a, [$ffab] ; a59 + and $3 ; a5b + jr z, Functiona56 ; a5d + ret ; a5f +; a60 + +Functiona60:: + ld a, [$d042] ; a60 + and a ; a63 + jr nz, Functiona72 ; a64 + call Functiona77 ; a66 + push de ; a69 + ld de, $8 ; a6a + call Function3e24 ; a6d + pop de ; a70 + ret ; a71 +; a72 + +Functiona72:: + ld c, $41 ; a72 + jp Function33c ; a74 +; a77 + +Functiona77:: + ldh a, [$ffda] ; a77 + push af ; a79 + ld a, $1 ; a7a + ldh [$ffda], a ; a7c + ld a, [$c1c6] ; a7e + or a ; a81 + jr z, Functiona8a ; a82 + ld a, $70 ; a84 + ld hl, $4de9 ; a86 + rst FarCall ; a89 + call Functionaa6 ; a8a + call Functiona08 ; a8d + ldh a, [$ffa9] ; a90 + and $3 ; a92 + jr nz, Functionaa2 ; a94 + call Function343 ; a96 + ld a, $1 ; a99 + ldh [$ffd6], a ; a9b + call Function32e ; a9d + jr Functiona8a ; aa0 +; aa2 + +Functionaa2:: + pop af ; aa2 + ldh [$ffda], a ; aa3 + ret ; aa5 +; aa6 + +Functionaa6:: + ldh a, [$ff9d] ; aa6 + and $10 ; aa8 + jr z, Functionab0 ; aaa + ld a, $ee ; aac + jr Functionab2 ; aae +; ab0 + +Functionab0:: + ld a, $7a ; ab0 + ld [$c506], a ; ab2 + ret ; ab5 +; ab6 + +Functionab6:: + push bc ; ab6 + ld a, [hl] ; ab7 + ld b, a ; ab8 + ld a, $ee ; ab9 + cp b ; abb + pop bc ; abc + jr nz, Functionad7 ; abd + ldh a, [$ffb1] ; abf + dec a ; ac1 + ldh [$ffb1], a ; ac2 + ret nz ; ac4 + ldh a, [$ffb2] ; ac5 + dec a ; ac7 + ldh [$ffb2], a ; ac8 + ret nz ; aca + ld a, $7a ; acb + ld [hl], a ; acd + ld a, $ff ; ace + ldh [$ffb1], a ; ad0 + ld a, $6 ; ad2 + ldh [$ffb2], a ; ad4 + ret ; ad6 +; ad7 + +Functionad7:: + ldh a, [$ffb1] ; ad7 + and a ; ad9 + ret z ; ada + dec a ; adb + ldh [$ffb1], a ; adc + ret nz ; ade + dec a ; adf + ldh [$ffb1], a ; ae0 + ldh a, [$ffb2] ; ae2 + dec a ; ae4 + ldh [$ffb2], a ; ae5 + ret nz ; ae7 + ld a, $6 ; ae8 + ldh [$ffb2], a ; aea + ld a, $ee ; aec + ld [hl], a ; aee + ret ; aef +; af0 + +Functionaf0:: + ld [$c1c4], a ; af0 + ldh a, [hROMBank] ; af3 + push af ; af5 + ld a, [$c1c4] ; af6 + rst Bankswitch ; af9 + call Functionb00 ; afa + pop af ; afd + rst Bankswitch ; afe + ret ; aff +; b00 + +Functionb00:: + ld a, e ; b00 + ld [$c1c2], a ; b01 + ld a, d ; b04 + ld [$c1c3], a ; b05 + ld a, [hl] ; b08 + cp $ff ; b09 + ret z ; b0b + and $e0 ; b0c + cp $e0 ; b0e + jr nz, Functionb22 ; b10 + ld a, [hl] ; b12 + add a ; b13 + add a ; b14 + add a ; b15 + and $e0 ; b16 + push af ; b18 + ld a, [hli] ; b19 + and $3 ; b1a + ld b, a ; b1c + ld a, [hli] ; b1d + ld c, a ; b1e + inc bc ; b1f + jr Functionb2a ; b20 +; b22 + +Functionb22:: + push af ; b22 + ld a, [hli] ; b23 + and $1f ; b24 + ld c, a ; b26 + ld b, $0 ; b27 + inc c ; b29 + inc b ; b2a + inc c ; b2b + pop af ; b2c + bit 7, a ; b2d + jr nz, Functionb7b ; b2f + cp $20 ; b31 + jr z, Functionb49 ; b33 + cp $40 ; b35 + jr z, Functionb55 ; b37 + cp $60 ; b39 + jr z, Functionb6f ; b3b + dec c ; b3d + jr nz, Functionb44 ; b3e + dec b ; b40 + jp z, Functionb08 ; b41 + ld a, [hli] ; b44 + ld [de], a ; b45 + inc de ; b46 + jr Functionb3d ; b47 +; b49 + +Functionb49:: + ld a, [hli] ; b49 + dec c ; b4a + jr nz, Functionb51 ; b4b + dec b ; b4d + jp z, Functionb08 ; b4e + ld [de], a ; b51 + inc de ; b52 + jr Functionb4a ; b53 +; b55 + +Functionb55:: + dec c ; b55 + jr nz, Functionb5c ; b56 + dec b ; b58 + jp z, Functionb6b ; b59 + ld a, [hli] ; b5c + ld [de], a ; b5d + inc de ; b5e + dec c ; b5f + jr nz, Functionb66 ; b60 + dec b ; b62 + jp z, Functionb6c ; b63 + ld a, [hld] ; b66 + ld [de], a ; b67 + inc de ; b68 + jr Functionb55 ; b69 +; b6b + +Functionb6b:: + inc hl ; b6b + inc hl ; b6c + jr Functionb08 ; b6d +; b6f + +Functionb6f:: + xor a ; b6f + dec c ; b70 + jr nz, Functionb77 ; b71 + dec b ; b73 + jp z, Functionb08 ; b74 + ld [de], a ; b77 + inc de ; b78 + jr Functionb70 ; b79 +; b7b + +Functionb7b:: + push hl ; b7b + push af ; b7c + ld a, [hli] ; b7d + bit 7, a ; b7e + jr z, Functionb8d ; b80 + and $7f ; b82 + cpl ; b84 + add e ; b85 + ld l, a ; b86 + ld a, $ff ; b87 + adc d ; b89 + ld h, a ; b8a + jr Functionb99 ; b8b +; b8d + +Functionb8d:: + ld l, [hl] ; b8d + ld h, a ; b8e + ld a, [$c1c2] ; b8f + add l ; b92 + ld l, a ; b93 + ld a, [$c1c3] ; b94 + adc h ; b97 + ld h, a ; b98 + pop af ; b99 + cp $80 ; b9a + jr z, Functionba6 ; b9c + cp $a0 ; b9e + jr z, Functionbb1 ; ba0 + cp $c0 ; ba2 + jr z, Functionbc9 ; ba4 + dec c ; ba6 + jr nz, Functionbac ; ba7 + dec b ; ba9 + jr z, Functionbd5 ; baa + ld a, [hli] ; bac + ld [de], a ; bad + inc de ; bae + jr Functionba6 ; baf +; bb1 + +Functionbb1:: + dec c ; bb1 + jr nz, Functionbb8 ; bb2 + dec b ; bb4 + jp z, Functionbd5 ; bb5 + ld a, [hli] ; bb8 + push bc ; bb9 + ld bc, $8 ; bba + rra ; bbd + rl b ; bbe + dec c ; bc0 + jr nz, Functionbbd ; bc1 + ld a, b ; bc3 + pop bc ; bc4 + ld [de], a ; bc5 + inc de ; bc6 + jr Functionbb1 ; bc7 +; bc9 + +Functionbc9:: + dec c ; bc9 + jr nz, Functionbd0 ; bca + dec b ; bcc + jp z, Functionbd5 ; bcd + ld a, [hld] ; bd0 + ld [de], a ; bd1 + inc de ; bd2 + jr Functionbc9 ; bd3 +; bd5 + +Functionbd5:: + pop hl ; bd5 + bit 7, [hl] ; bd6 + jr nz, Functionbdb ; bd8 + inc hl ; bda + inc hl ; bdb + jp Functionb08 ; bdc +; bdf + +Functionbdf:: + ldh a, [$ffe8] ; bdf + and a ; be1 + ret z ; be2 + ldh a, [$ffe7] ; be3 + and a ; be5 + ret z ; be6 + ld hl, $c280 ; be7 + ld a, $80 ; bea + ldh [$ff68], a ; bec + ld c, $4 ; bee + ld a, [hli] ; bf0 + ldh [$ff69], a ; bf1 + ld a, [hli] ; bf3 + ldh [$ff69], a ; bf4 + ld a, [hli] ; bf6 + ldh [$ff69], a ; bf7 + ld a, [hli] ; bf9 + ldh [$ff69], a ; bfa + ld a, [hli] ; bfc + ldh [$ff69], a ; bfd + ld a, [hli] ; bff + ldh [$ff69], a ; c00 + ld a, [hli] ; c02 + ldh [$ff69], a ; c03 + ld a, [hli] ; c05 + ldh [$ff69], a ; c06 + ld a, [hli] ; c08 + ldh [$ff69], a ; c09 + ld a, [hli] ; c0b + ldh [$ff69], a ; c0c + ld a, [hli] ; c0e + ldh [$ff69], a ; c0f + ld a, [hli] ; c11 + ldh [$ff69], a ; c12 + ld a, [hli] ; c14 + ldh [$ff69], a ; c15 + ld a, [hli] ; c17 + ldh [$ff69], a ; c18 + ld a, [hli] ; c1a + ldh [$ff69], a ; c1b + ld a, [hli] ; c1d + ldh [$ff69], a ; c1e + dec c ; c20 + jr nz, Functionbf0 ; c21 + ld a, $80 ; c23 + ldh [$ff6a], a ; c25 + ld c, $4 ; c27 + ld a, [hli] ; c29 + ldh [$ff6b], a ; c2a + ld a, [hli] ; c2c + ldh [$ff6b], a ; c2d + ld a, [hli] ; c2f + ldh [$ff6b], a ; c30 + ld a, [hli] ; c32 + ldh [$ff6b], a ; c33 + ld a, [hli] ; c35 + ldh [$ff6b], a ; c36 + ld a, [hli] ; c38 + ldh [$ff6b], a ; c39 + ld a, [hli] ; c3b + ldh [$ff6b], a ; c3c + ld a, [hli] ; c3e + ldh [$ff6b], a ; c3f + ld a, [hli] ; c41 + ldh [$ff6b], a ; c42 + ld a, [hli] ; c44 + ldh [$ff6b], a ; c45 + ld a, [hli] ; c47 + ldh [$ff6b], a ; c48 + ld a, [hli] ; c4a + ldh [$ff6b], a ; c4b + ld a, [hli] ; c4d + ldh [$ff6b], a ; c4e + ld a, [hli] ; c50 + ldh [$ff6b], a ; c51 + ld a, [hli] ; c53 + ldh [$ff6b], a ; c54 + ld a, [hli] ; c56 + ldh [$ff6b], a ; c57 + dec c ; c59 + jr nz, Functionc29 ; c5a + xor a ; c5c + ldh [$ffe7], a ; c5d + scf ; c5f + ret ; c60 +; c61 + +Functionc61:: + ldh [$ff47], a ; c61 + push af ; c63 + ldh a, [$ffe8] ; c64 + and a ; c66 + jr z, Functionc81 ; c67 + push hl ; c69 + push de ; c6a + push bc ; c6b + ld hl, $c280 ; c6c + ld de, $c200 ; c6f + ldh a, [$ff47] ; c72 + ld b, a ; c74 + ld c, $8 ; c75 + call Functioncea ; c77 + ld a, $1 ; c7a + ldh [$ffe7], a ; c7c + pop bc ; c7e + pop de ; c7f + pop hl ; c80 + pop af ; c81 + ret ; c82 +; c83 + +Functionc83:: + ld a, e ; c83 + ldh [$ff48], a ; c84 + ld a, d ; c86 + ldh [$ff49], a ; c87 + ldh a, [$ffe8] ; c89 + and a ; c8b + ret z ; c8c + push hl ; c8d + push de ; c8e + push bc ; c8f + ld hl, $c2c0 ; c90 + ld de, $c240 ; c93 + ldh a, [$ff48] ; c96 + ld b, a ; c98 + ld c, $8 ; c99 + call Functioncea ; c9b + ld a, $1 ; c9e + ldh [$ffe7], a ; ca0 + pop bc ; ca2 + pop de ; ca3 + pop hl ; ca4 + ret ; ca5 +; ca6 + +Functionca6:: + ldh [$ff48], a ; ca6 + push af ; ca8 + ldh a, [$ffe8] ; ca9 + and a ; cab + jr z, Functioncc6 ; cac + push hl ; cae + push de ; caf + push bc ; cb0 + ld hl, $c2c0 ; cb1 + ld de, $c240 ; cb4 + ldh a, [$ff48] ; cb7 + ld b, a ; cb9 + ld c, $1 ; cba + call Functioncea ; cbc + ld a, $1 ; cbf + ldh [$ffe7], a ; cc1 + pop bc ; cc3 + pop de ; cc4 + pop hl ; cc5 + pop af ; cc6 + ret ; cc7 +; cc8 + +Functioncc8:: + ldh [$ff49], a ; cc8 + push af ; cca + ldh a, [$ffe8] ; ccb + and a ; ccd + jr z, Functionce8 ; cce + push hl ; cd0 + push de ; cd1 + push bc ; cd2 + ld hl, $c2c8 ; cd3 + ld de, $c248 ; cd6 + ldh a, [$ff49] ; cd9 + ld b, a ; cdb + ld c, $1 ; cdc + call Functioncea ; cde + ld a, $1 ; ce1 + ldh [$ffe7], a ; ce3 + pop bc ; ce5 + pop de ; ce6 + pop hl ; ce7 + pop af ; ce8 + ret ; ce9 +; cea + +Functioncea:: + push bc ; cea + ld c, $4 ; ceb + push de ; ced + push hl ; cee + ld a, b ; cef + and $3 ; cf0 + add a ; cf2 + ld l, a ; cf3 + ld h, $0 ; cf4 + add hl, de ; cf6 + ld e, [hl] ; cf7 + inc hl ; cf8 + ld d, [hl] ; cf9 + pop hl ; cfa + ld [hl], e ; cfb + inc hl ; cfc + ld [hl], d ; cfd + inc hl ; cfe + srl b ; cff + srl b ; d01 + pop de ; d03 + dec c ; d04 + jr nz, Functionced ; d05 + ld a, $8 ; d07 + add e ; d09 + jr nc, Functiond0d ; d0a + inc d ; d0c + ld e, a ; d0d + pop bc ; d0e + dec c ; d0f + jr nz, Functioncea ; d10 + ret ; d12 +; d13 + +Functiond13:: + ldh a, [$ffe8] ; d13 + and a ; d15 + ret z ; d16 + ld a, $1 ; d17 + ldh [$ff4f], a ; d19 + ld hl, $8000 ; d1b + ld bc, $2000 ; d1e + xor a ; d21 + call Function314c ; d22 + ld a, $0 ; d25 + ldh [$ff4f], a ; d27 + ret ; d29 +; d2a + +Functiond2a:: + ld hl, $c3a0 ; d2a + ld de, $ccd9 ; d2d + ld bc, $168 ; d30 + ld a, [hli] ; d33 + cp $60 ; d34 + jr c, Functiond3b ; d36 + ld a, $7 ; d38 + ld [de], a ; d3a + inc de ; d3b + dec bc ; d3c + ld a, b ; d3d + or c ; d3e + jr nz, Functiond33 ; d3f + ret ; d41 +; d42 + +Functiond42:: + ldh a, [$ffe8] ; d42 + and a ; d44 + ret z ; d45 + ld hl, $c280 ; d46 + ld bc, $50 ; d49 + xor a ; d4c + call Function314c ; d4d + ld a, $1 ; d50 + ldh [$ffe7], a ; d52 + call Function32e ; d54 + ret ; d57 +; d58 + +Functiond58:: + ldh a, [hROMBank] ; d58 + push af ; d5a + ld a, $2 ; d5b + rst Bankswitch ; d5d + call Function4000 ; d5e + pop af ; d61 + rst Bankswitch ; d62 + ret ; d63 +; d64 + +Functiond64:: + ldh a, [hROMBank] ; d64 + push af ; d66 + ld a, $2 ; d67 + rst Bankswitch ; d69 + call Function404f ; d6a + pop af ; d6d + rst Bankswitch ; d6e + ret ; d6f +; d70 + +Functiond70:: + ld b, a ; d70 + ldh a, [hROMBank] ; d71 + push af ; d73 + ld a, b ; d74 + rst Bankswitch ; d75 + ld a, $0 ; d76 + call OpenSRAM ; d78 + ld hl, $a188 ; d7b + ld bc, $310 ; d7e + xor a ; d81 + call Function314c ; d82 + ld hl, $cf3c ; d85 + ld a, [hli] ; d88 + ld h, [hl] ; d89 + ld l, a ; d8a + ld de, $a188 ; d8b + call Functionb00 ; d8e + call CloseSRAM ; d91 + pop af ; d94 + rst Bankswitch ; d95 + ret ; d96 +; d97 + +Functiond97:: + ld a, $5 ; d97 + ld hl, $413c ; d99 + rst FarCall ; d9c + ret ; d9d +; d9e + +Functiond9e:: + ld a, $3e ; d9e + ld hl, $4000 ; da0 + rst FarCall ; da3 + ret ; da4 +; da5 + +Functionda5:: + ld a, $3e ; da5 + ld hl, $4032 ; da7 + rst FarCall ; daa + ret ; dab +; dac + +Functiondac:: + ld a, $3e ; dac + ld hl, $400c ; dae + rst FarCall ; db1 + ret ; db2 +; db3 + +Functiondb3:: + push de ; db3 + ld a, $0 ; db4 + call OpenSRAM ; db6 + push bc ; db9 + ld de, $a000 ; dba + ld a, b ; dbd + call Functionaf0 ; dbe + pop bc ; dc1 + pop hl ; dc2 + ld de, $a000 ; dc3 + call Functiondfe ; dc6 + call CloseSRAM ; dc9 + ret ; dcc +; dcd + +Functiondcd:: + ld [$d156], a ; dcd + ldh a, [hROMBank] ; dd0 + push af ; dd2 + ld a, [$d156] ; dd3 + rst Bankswitch ; dd6 + call Function311a ; dd7 + pop af ; dda + rst Bankswitch ; ddb + ret ; ddc +; ddd + +Functionddd:: + ld [$d156], a ; ddd + ldh a, [hROMBank] ; de0 + push af ; de2 + ld a, [$d156] ; de3 + rst Bankswitch ; de6 + ld a, h ; de7 + ld h, d ; de8 + ld d, a ; de9 + ld a, l ; dea + ld l, e ; deb + ld e, a ; dec + inc b ; ded + inc c ; dee + jr Functiondf5 ; def +; df1 + +Functiondf1:: + ld a, [de] ; df1 + inc de ; df2 + ld [hli], a ; df3 + ld [hli], a ; df4 + dec c ; df5 + jr nz, Functiondf1 ; df6 + dec b ; df8 + jr nz, Functiondf1 ; df9 + pop af ; dfb + rst Bankswitch ; dfc + ret ; dfd +; dfe + +Functiondfe:: + ldh a, [$ffd6] ; dfe + push af ; e00 + xor a ; e01 + ldh [$ffd6], a ; e02 + ldh a, [hROMBank] ; e04 + push af ; e06 + ld a, b ; e07 + rst Bankswitch ; e08 + ld a, e ; e09 + ld [$ce68], a ; e0a + ld a, d ; e0d + ld [$ce69], a ; e0e + ld a, l ; e11 + ld [$ce6a], a ; e12 + ld a, h ; e15 + ld [$ce6b], a ; e16 + ld a, c ; e19 + cp $8 ; e1a + jr nc, Functione2a ; e1c + ld [$ce67], a ; e1e + call Function32e ; e21 + pop af ; e24 + rst Bankswitch ; e25 + pop af ; e26 + ldh [$ffd6], a ; e27 + ret ; e29 +; e2a + +Functione2a:: + ld a, $8 ; e2a + ld [$ce67], a ; e2c + call Function32e ; e2f + ld a, c ; e32 + sub a, $8 ; e33 + ld c, a ; e35 + jr Functione19 ; e36 +; e38 + +Functione38:: + ldh a, [$ffd6] ; e38 + push af ; e3a + xor a ; e3b + ldh [$ffd6], a ; e3c + ldh a, [hROMBank] ; e3e + push af ; e40 + ld a, b ; e41 + rst Bankswitch ; e42 + ld a, e ; e43 + ld [$ce6d], a ; e44 + ld a, d ; e47 + ld [$ce6e], a ; e48 + ld a, l ; e4b + ld [$ce6f], a ; e4c + ld a, h ; e4f + ld [$ce70], a ; e50 + ld a, c ; e53 + cp $8 ; e54 + jr nc, Functione64 ; e56 + ld [$ce6c], a ; e58 + call Function32e ; e5b + pop af ; e5e + rst Bankswitch ; e5f + pop af ; e60 + ldh [$ffd6], a ; e61 + ret ; e63 +; e64 + +Functione64:: + ld a, $8 ; e64 + ld [$ce6c], a ; e66 + call Function32e ; e69 + ld a, c ; e6c + sub a, $8 ; e6d + ld c, a ; e6f + jr Functione53 ; e70 +; e72 + +Functione72:: + ldh a, [$ff40] ; e72 + bit 7, a ; e74 + jp nz, Functiondfe ; e76 + push hl ; e79 + ld h, d ; e7a + ld l, e ; e7b + pop de ; e7c + ld a, b ; e7d + push af ; e7e + swap c ; e7f + ld a, $f ; e81 + and c ; e83 + ld b, a ; e84 + ld a, $f0 ; e85 + and c ; e87 + ld c, a ; e88 + pop af ; e89 + jp Functiondcd ; e8a +; e8d + +Functione8d:: + ldh a, [$ff40] ; e8d + bit 7, a ; e8f + jp nz, Functione38 ; e91 + push de ; e94 + ld d, h ; e95 + ld e, l ; e96 + ld a, b ; e97 + push af ; e98 + ld h, $0 ; e99 + ld l, c ; e9b + add hl, hl ; e9c + add hl, hl ; e9d + add hl, hl ; e9e + ld b, h ; e9f + ld c, l ; ea0 + pop af ; ea1 + pop hl ; ea2 + jp Functionddd ; ea3 +; ea6 + +Functionea6:: + ldh a, [$ff40] ; ea6 + add a ; ea8 + jp c, Functiondfe ; ea9 + push de ; eac + push hl ; ead + ld a, b ; eae + ld h, $0 ; eaf + ld l, c ; eb1 + add hl, hl ; eb2 + add hl, hl ; eb3 + add hl, hl ; eb4 + add hl, hl ; eb5 + ld b, h ; eb6 + ld c, l ; eb7 + pop de ; eb8 + pop hl ; eb9 + jp Functiondcd ; eba +; ebd + +Functionebd:: + ld a, $7f ; ebd + ld de, $14 ; ebf + push hl ; ec2 + push bc ; ec3 + ld [hli], a ; ec4 + dec c ; ec5 + jr nz, Functionec4 ; ec6 + pop bc ; ec8 + pop hl ; ec9 + add hl, de ; eca + dec b ; ecb + jr nz, Functionec2 ; ecc + ret ; ece +; ecf + +Functionecf:: + ld hl, $c3a0 ; ecf + ld a, $7f ; ed2 + ld bc, $168 ; ed4 + call Function314c ; ed7 + ldh a, [$ff40] ; eda + bit 7, a ; edc + ret z ; ede + jp WaitBGMap ; edf +; ee2 + +Functionee2:: + ld a, $7 ; ee2 + ld hl, $ccd9 ; ee4 + ld bc, $168 ; ee7 + call Function314c ; eea + jr Functionecf ; eed +; eef + +Functioneef:: + push bc ; eef + push hl ; ef0 + call Functionef8 ; ef1 + pop hl ; ef4 + pop bc ; ef5 + jr Functionf2b ; ef6 +; ef8 + +Functionef8:: + push hl ; ef8 + ld a, $79 ; ef9 + ld [hli], a ; efb + inc a ; efc + call Functionf25 ; efd + inc a ; f00 + ld [hl], a ; f01 + pop hl ; f02 + ld de, $14 ; f03 + add hl, de ; f06 + push hl ; f07 + ld a, $7c ; f08 + ld [hli], a ; f0a + ld a, $7f ; f0b + call Functionf25 ; f0d + ld [hl], $7c ; f10 + pop hl ; f12 + ld de, $14 ; f13 + add hl, de ; f16 + dec b ; f17 + jr nz, Functionf07 ; f18 + ld a, $7d ; f1a + ld [hli], a ; f1c + ld a, $7a ; f1d + call Functionf25 ; f1f + ld [hl], $7e ; f22 + ret ; f24 +; f25 + +Functionf25:: + ld d, c ; f25 + ld [hli], a ; f26 + dec d ; f27 + jr nz, Functionf26 ; f28 + ret ; f2a +; f2b + +Functionf2b:: + ld de, $939 ; f2b + add hl, de ; f2e + inc b ; f2f + inc b ; f30 + inc c ; f31 + inc c ; f32 + ld a, $7 ; f33 + push bc ; f35 + push hl ; f36 + ld [hli], a ; f37 + dec c ; f38 + jr nz, Functionf37 ; f39 + pop hl ; f3b + ld de, $14 ; f3c + add hl, de ; f3f + pop bc ; f40 + dec b ; f41 + jr nz, Functionf35 ; f42 + ret ; f44 +; f45 + +Functionf45:: + ld hl, $c490 ; f45 + ld b, $4 ; f48 + ld c, $12 ; f4a + jp Functioneef ; f4c +; f4f + +Functionf4f:: + nop ; f4f + ld [$9fe3], sp ; f50 + sbc e ; f53 + ret c ; f54 + - ; f55 + add a ; f56 + rst $20 ; f57 + ld d, a ; f58 + ld hl, $f5d ; f59 + ret ; f5c +; f5d + +Functionf5d:: + ld d, b ; f5d + call Functionf68 ; f5e + ld bc, $c4b9 ; f61 + call Function1272 ; f64 + ret ; f67 +; f68 + +Functionf68:: + push hl ; f68 + call Functionf45 ; f69 + call Function196f ; f6c + call Function3472 ; f6f + pop hl ; f72 + ret ; f73 +; f74 + +Functionf74:: + push hl ; f74 + ld a, [de] ; f75 + cp $50 ; f76 + jr nz, Functionf83 ; f78 + ld b, h ; f7a + ld c, l ; f7b + pop hl ; f7c + ret ; f7d +; f7e + +Functionf7e:: + pop de ; f7e + inc de ; f7f + jp Functionf75 ; f80 +; f83 + +Functionf83:: + cp $4f ; f83 + jp z, Function117f ; f85 + cp $4e ; f88 + jp z, Function116d ; f8a + and a ; f8d + jp z, Function120c ; f8e + cp $4c ; f91 + jp z, Function11c8 ; f93 + cp $4b ; f96 + jp z, Function11b0 ; f98 + cp $51 ; f9b + jp z, Function1187 ; f9d + cp $49 ; fa0 + jp z, Function1066 ; fa2 + cp $52 ; fa5 + jp z, Function106d ; fa7 + cp $53 ; faa + jp z, Function1074 ; fac + cp $35 ; faf + jp z, Function10c8 ; fb1 + cp $36 ; fb4 + jp z, Function10cf ; fb6 + cp $37 ; fb9 + jp z, Function10d6 ; fbb + cp $38 ; fbe + jp z, Function107b ; fc0 + cp $39 ; fc3 + jp z, Function1082 ; fc5 + cp $54 ; fc8 + jp z, Function10a5 ; fca + cp $5b ; fcd + jp z, Function1097 ; fcf + cp $5e ; fd2 + jp z, Function109e ; fd4 + cp $5c ; fd7 + jp z, Function1090 ; fd9 + cp $5d ; fdc + jp z, Function1089 ; fde + cp $23 ; fe1 + jp z, Function10ac ; fe3 + cp $22 ; fe6 + jp z, Function1176 ; fe8 + cp $55 ; feb + jp z, Function11d6 ; fed + cp $56 ; ff0 + jp z, Function10b3 ; ff2 + cp $57 ; ff5 + jp z, Function1205 ; ff7 + cp $58 ; ffa + jp z, Function11eb ; ffc + cp $4a ; fff + jp z, Function10ba ; 1001 + cp $24 ; 1004 + jp z, Function10c1 ; 1006 + cp $25 ; 1009 + jp z, Functionf7f ; 100b + cp $1f ; 100e + jr nz, Function1014 ; 1010 + ld a, $7f ; 1012 + cp $5f ; 1014 + jp z, Function11e7 ; 1016 + cp $59 ; 1019 + jp z, Function10dd ; 101b + cp $5a ; 101e + jp z, Function10e3 ; 1020 + cp $3f ; 1023 + jp z, Function10fb ; 1025 + cp $e4 ; 1028 + jr z, Function1030 ; 102a + cp $e5 ; 102c + jr nz, Function1037 ; 102e + ld b, a ; 1030 + call Function124a ; 1031 + jp Functionf7f ; 1034 +; 1037 + +Function1037:: + cp $60 ; 1037 + jr nc, Function105f ; 1039 + cp $40 ; 103b + jr nc, Function1050 ; 103d + cp $20 ; 103f + jr nc, Function1047 ; 1041 + add a, $80 ; 1043 + jr Function1049 ; 1045 +; 1047 + +Function1047:: + add a, $90 ; 1047 + ld b, $e5 ; 1049 + call Function124a ; 104b + jr Function105f ; 104e +; 1050 + +Function1050:: + cp $44 ; 1050 + jr nc, Function1058 ; 1052 + add a, $59 ; 1054 + jr Function105a ; 1056 +; 1058 + +Function1058:: + add a, $86 ; 1058 + ld b, $e4 ; 105a + call Function124a ; 105c + ld [hli], a ; 105f + call Function31e2 ; 1060 + jp Functionf7f ; 1063 +; 1066 + +Function1066:: + push de ; 1066 + ld de, $d1ae ; 1067 + jp Function1132 ; 106a +; 106d + +Function106d:: + push de ; 106d + ld de, $d1a3 ; 106e + jp Function1132 ; 1071 +; 1074 + +Function1074:: + push de ; 1074 + ld de, $d1b9 ; 1075 + jp Function1132 ; 1078 +; 107b + +Function107b:: + push de ; 107b + ld de, $d1c4 ; 107c + jp Function1132 ; 107f +; 1082 + +Function1082:: + push de ; 1082 + ld de, $d1cf ; 1083 + jp Function1132 ; 1086 +; 1089 + +Function1089:: + push de ; 1089 + ld de, $113e ; 108a + jp Function1132 ; 108d +; 1090 + +Function1090:: + push de ; 1090 + ld de, $113b ; 1091 + jp Function1132 ; 1094 +; 1097 + +Function1097:: + push de ; 1097 + ld de, $1146 ; 1098 + jp Function1132 ; 109b +; 109e + +Function109e:: + push de ; 109e + ld de, $1149 ; 109f + jp Function1132 ; 10a2 +; 10a5 + +Function10a5:: + push de ; 10a5 + ld de, $1150 ; 10a6 + jp Function1132 ; 10a9 +; 10ac + +Function10ac:: + push de ; 10ac + ld de, $1155 ; 10ad + jp Function1132 ; 10b0 +; 10b3 + +Function10b3:: + push de ; 10b3 + ld de, $115a ; 10b4 + jp Function1132 ; 10b7 +; 10ba + +Function10ba:: + push de ; 10ba + ld de, $1164 ; 10bb + jp Function1132 ; 10be +; 10c1 + +Function10c1:: + push de ; 10c1 + ld de, $1167 ; 10c2 + jp Function1132 ; 10c5 +; 10c8 + +Function10c8:: + push de ; 10c8 + ld de, $116c ; 10c9 + jp Function1132 ; 10cc +; 10cf + +Function10cf:: + push de ; 10cf + ld de, $116c ; 10d0 + jp Function1132 ; 10d3 +; 10d6 + +Function10d6:: + push de ; 10d6 + ld de, $116c ; 10d7 + jp Function1132 ; 10da +; 10dd + +Function10dd:: + ldh a, [$ffe6] ; 10dd + xor $1 ; 10df + jr Function10e5 ; 10e1 +; 10e3 + +Function10e3:: + ldh a, [$ffe6] ; 10e3 + push de ; 10e5 + and a ; 10e6 + jr nz, Function10ee ; 10e7 + ld de, $cb01 ; 10e9 + jr Function1132 ; 10ec +; 10ee + +Function10ee:: + ld de, $115d ; 10ee + call Functionf74 ; 10f1 + ld h, b ; 10f4 + ld l, c ; 10f5 + ld de, $caf6 ; 10f6 + jr Function1132 ; 10f9 +; 10fb + +Function10fb:: + push de ; 10fb + ld a, [$d042] ; 10fc + and a ; 10ff + jr nz, Function112d ; 1100 + ld a, [$d11d] ; 1102 + cp $9 ; 1105 + jr z, Function1128 ; 1107 + cp $2a ; 1109 + jr z, Function1128 ; 110b + ld de, $cb34 ; 110d + call Functionf74 ; 1110 + ld h, b ; 1113 + ld l, c ; 1114 + ld de, $116a ; 1115 + call Functionf74 ; 1118 + push bc ; 111b + ld hl, $58f2 ; 111c + ld a, $e ; 111f + rst FarCall ; 1121 + pop hl ; 1122 + ld de, $cf6b ; 1123 + jr Function1132 ; 1126 +; 1128 + +Function1128:: + ld de, $d1b9 ; 1128 + jr Function1132 ; 112b +; 112d + +Function112d:: + ld de, $cb34 ; 112d + jr Function1132 ; 1130 +; 1132 + +Function1132:: + call Functionf74 ; 1132 + ld h, b ; 1135 + ld l, c ; 1136 + pop de ; 1137 + jp Functionf7f ; 1138 +; 113b + +Function113b:: + sub e ; 113b + adc h ; 113c + ld d, b ; 113d + sub e ; 113e + sub c ; 113f + add b ; 1140 + adc b ; 1141 + adc l ; 1142 + add h ; 1143 + sub c ; 1144 + ld d, b ; 1145 + adc a ; 1146 + add d ; 1147 + ld d, b ; 1148 + sub c ; 1149 + adc [hl] ; 114a + add d ; 114b + adc d ; 114c + add h ; 114d + sub e ; 114e + ld d, b ; 114f + adc a ; 1150 + adc [hl] ; 1151 + adc d ; 1152 + ld [$ba50], a ; 1153 + or e ; 1156 + add hl, hl ; 1157 + or a ; 1158 + ld d, b ; 1159 + ld [hl], l ; 115a + ld [hl], l ; 115b + ld d, b ; 115c + add h ; 115d + xor l ; 115e + and h ; 115f + xor h ; 1160 + cp b ; 1161 + ld a, a ; 1162 + ld d, b ; 1163 + pop hl ; 1164 + ld [$ff00+c], a ; 1165 + ld d, b ; 1166 + ld [hl], b ; 1167 + ld [hl], c ; 1168 + ld d, b ; 1169 + ld a, a ; 116a + ld d, b ; 116b + ld d, b ; 116c + pop hl ; 116d + ld bc, $28 ; 116e + add hl, bc ; 1171 + push hl ; 1172 + jp Functionf7f ; 1173 +; 1176 + +Function1176:: + pop hl ; 1176 + ld bc, $14 ; 1177 + add hl, bc ; 117a + push hl ; 117b + jp Functionf7f ; 117c +; 117f + +Function117f:: + pop hl ; 117f + ld hl, $c4e1 ; 1180 + push hl ; 1183 + jp Functionf7f ; 1184 +; 1187 + +Function1187:: + push de ; 1187 + ld a, [$d042] ; 1188 + cp $3 ; 118b + jr z, Function1192 ; 118d + call Function1255 ; 118f + call Function123a ; 1192 + call Functiona60 ; 1195 + ld hl, $c4b9 ; 1198 + ld bc, $312 ; 119b + call Functionebd ; 119e + call Function125b ; 11a1 + ld c, $14 ; 11a4 + call Function33c ; 11a6 + ld hl, $c4b9 ; 11a9 + pop de ; 11ac + jp Functionf7f ; 11ad +; 11b0 + +Function11b0:: + ld a, [$d042] ; 11b0 + or a ; 11b3 + jr nz, Function11b9 ; 11b4 + call Function1255 ; 11b6 + call Function123a ; 11b9 + push de ; 11bc + call Functiona60 ; 11bd + pop de ; 11c0 + ld a, [$d042] ; 11c1 + or a ; 11c4 + call z, Function125b ; 11c5 + push de ; 11c8 + call Function121d ; 11c9 + call Function121d ; 11cc + ld hl, $c4e1 ; 11cf + pop de ; 11d2 + jp Functionf7f ; 11d3 +; 11d6 + +Function11d6:: + push de ; 11d6 + ld de, $11e5 ; 11d7 + ld b, h ; 11da + ld c, l ; 11db + call Functionf74 ; 11dc + ld h, b ; 11df + ld l, c ; 11e0 + pop de ; 11e1 + jp Functionf7f ; 11e2 +; 11e5 + +Function11e5:: + ld c, e ; 11e5 + ld d, b ; 11e6 + ld [hl], $e8 ; 11e7 + pop hl ; 11e9 + ret ; 11ea +; 11eb + +Function11eb:: + ld a, [$d042] ; 11eb + cp $3 ; 11ee + jr z, Function11f5 ; 11f0 + call Function1255 ; 11f2 + call Function123a ; 11f5 + call Functiona60 ; 11f8 + ld a, [$d042] ; 11fb + cp $3 ; 11fe + jr z, Function1205 ; 1200 + call Function125b ; 1202 + pop hl ; 1205 + ld de, $120b ; 1206 + dec de ; 1209 + ret ; 120a +; 120b + +Function120b:: + ld d, b ; 120b + ld b, h ; 120c + ld c, l ; 120d + pop hl ; 120e + ld de, $1214 ; 120f + dec de ; 1212 + ret ; 1213 +; 1214 + +Function1214:: + add hl, bc ; 1214 + or d ; 1215 + rst $38 ; 1216 + ld [de], a ; 1217 + nop ; 1218 + add e ; 1219 + and l ; 121a + - ; 121b + ld d, a ; 121c + ld hl, $c4b8 ; 121d + ld de, $c4a4 ; 1220 + ld bc, $3c ; 1223 + call Function311a ; 1226 + ld hl, $c4e1 ; 1229 + ld a, $7f ; 122c + ld bc, $12 ; 122e + call Function314c ; 1231 + ld c, $5 ; 1234 + call Function33c ; 1236 + ret ; 1239 +; 123a + +Function123a:: + push bc ; 123a + ldh a, [$ffda] ; 123b + push af ; 123d + ld a, $1 ; 123e + ldh [$ffda], a ; 1240 + call WaitBGMap ; 1242 + pop af ; 1245 + ldh [$ffda], a ; 1246 + pop bc ; 1248 + ret ; 1249 +; 124a + +Function124a:: + push af ; 124a + push hl ; 124b + ld a, b ; 124c + ld bc, $ffec ; 124d + add hl, bc ; 1250 + ld [hl], a ; 1251 + pop hl ; 1252 + pop af ; 1253 + ret ; 1254 +; 1255 + +Function1255:: + ld a, $ee ; 1255 + ld [$c506], a ; 1257 + ret ; 125a +; 125b + +Function125b:: + ld a, $7a ; 125b + ld [$c506], a ; 125d + ret ; 1260 +; 1261 + +Function1261:: + ld b, a ; 1261 + ldh a, [hROMBank] ; 1262 + push af ; 1264 + ld a, b ; 1265 + rst Bankswitch ; 1266 + call Functionf74 ; 1267 + pop af ; 126a + rst Bankswitch ; 126b + ret ; 126c +; 126d + +Function126d:: + ld hl, $1271 ; 126d + ret ; 1270 +; 1271 + +Function1271:: + ld d, b ; 1271 + ld a, [$d19c] ; 1272 + push af ; 1275 + set 1, a ; 1276 + ld [$d19c], a ; 1278 + call Function1283 ; 127b + pop af ; 127e + ld [$d19c], a ; 127f + ret ; 1282 +; 1283 + +Function1283:: + ld a, [hli] ; 1283 + cp $50 ; 1284 + ret z ; 1286 + call Function128c ; 1287 + jr Function1283 ; 128a +; 128c + +Function128c:: + push hl ; 128c + push bc ; 128d + ld c, a ; 128e + ld b, $0 ; 128f + ld hl, $129d ; 1291 + add hl, bc ; 1294 + add hl, bc ; 1295 + ld e, [hl] ; 1296 + inc hl ; 1297 + ld d, [hl] ; 1298 + pop bc ; 1299 + pop hl ; 129a + push de ; 129b + ret ; 129c +; 129d + +Function129d:: + rl d ; 129d + sub a, $12 ; 129f + - ; 12a1 + ld [de], a ; 12a2 + dec c ; 12a3 + inc de ; 12a4 + jr Function12ba ; 12a5 +; 12a7 + +Function12a7:: + jr z, Function12bc ; 12a7 + inc l ; 12a9 + inc de ; 12aa + ld b, d ; 12ab + inc de ; 12ac + ld d, c ; 12ad + inc de ; 12ae + ld d, d ; 12af + inc de ; 12b0 + ld l, l ; 12b1 + inc de ; 12b2 + add b ; 12b3 + inc de ; 12b4 + jp Functione213 ; 12b5 +; 12b8 + +Function12b8:: + inc de ; 12b8 + add b ; 12b9 + inc de ; 12ba + add b ; 12bb + inc de ; 12bc + add b ; 12bd + inc de ; 12be + add b ; 12bf + inc de ; 12c0 + add b ; 12c1 + inc de ; 12c2 + add b ; 12c3 + inc de ; 12c4 + ld [$213], a ; 12c5 + inc d ; 12c8 + ld [$ff00+c], a ; 12c9 + ld [de], a ; 12ca + ld d, h ; 12cb + ld e, l ; 12cc + ld h, b ; 12cd + ld l, c ; 12ce + call Functionf74 ; 12cf + ld h, d ; 12d2 + ld l, e ; 12d3 + inc hl ; 12d4 + ret ; 12d5 +; 12d6 + +Function12d6:: + ld a, [hli] ; 12d6 + ld e, a ; 12d7 + ld a, [hli] ; 12d8 + ld d, a ; 12d9 + push hl ; 12da + ld h, b ; 12db + ld l, c ; 12dc + call Functionf74 ; 12dd + pop hl ; 12e0 + ret ; 12e1 +; 12e2 + +Function12e2:: + ldh a, [hROMBank] ; 12e2 + push af ; 12e4 + ld a, [hli] ; 12e5 + ld e, a ; 12e6 + ld a, [hli] ; 12e7 + ld d, a ; 12e8 + ld a, [hli] ; 12e9 + ldh [hROMBank], a ; 12ea + ld MBC3RomBank, a ; 12ec + push hl ; 12ef + ld h, d ; 12f0 + ld l, e ; 12f1 + call Function1283 ; 12f2 + pop hl ; 12f5 + pop af ; 12f6 + ldh [hROMBank], a ; 12f7 + ld MBC3RomBank, a ; 12f9 + ret ; 12fc +; 12fd + +Function12fd:: + ld a, [hli] ; 12fd + ld e, a ; 12fe + ld a, [hli] ; 12ff + ld d, a ; 1300 + ld a, [hli] ; 1301 + push hl ; 1302 + ld h, b ; 1303 + ld l, c ; 1304 + ld c, a ; 1305 + call Function3ade ; 1306 + ld b, h ; 1309 + ld c, l ; 130a + pop hl ; 130b + ret ; 130c +; 130d + +Function130d:: + ld a, [hli] ; 130d + ld [$cfd6], a ; 130e + ld c, a ; 1311 + ld a, [hli] ; 1312 + ld [$cfd7], a ; 1313 + ld b, a ; 1316 + ret ; 1317 +; 1318 + +Function1318:: + ld a, [hli] ; 1318 + ld e, a ; 1319 + ld a, [hli] ; 131a + ld d, a ; 131b + ld a, [hli] ; 131c + ld b, a ; 131d + ld a, [hli] ; 131e + ld c, a ; 131f + push hl ; 1320 + ld h, d ; 1321 + ld l, e ; 1322 + call Functioneef ; 1323 + pop hl ; 1326 + ret ; 1327 +; 1328 + +Function1328:: + ld bc, $c4e1 ; 1328 + ret ; 132b +; 132c + +Function132c:: + ld a, [$d042] ; 132c + cp $3 ; 132f + jp z, Function13e2 ; 1331 + push hl ; 1334 + call Function1255 ; 1335 + push bc ; 1338 + call Functiona60 ; 1339 + pop bc ; 133c + call Function125b ; 133d + pop hl ; 1340 + ret ; 1341 +; 1342 + +Function1342:: + push hl ; 1342 + call Function125b ; 1343 + call Function121d ; 1346 + call Function121d ; 1349 + pop hl ; 134c + ld bc, $c4e1 ; 134d + ret ; 1350 +; 1351 + +Function1351:: + jp [hl] ; 1351 + ld a, [hli] ; 1352 + ld e, a ; 1353 + ld a, [hli] ; 1354 + ld d, a ; 1355 + ld a, [hli] ; 1356 + push hl ; 1357 + ld h, b ; 1358 + ld l, c ; 1359 + ld b, a ; 135a + and $f ; 135b + ld c, a ; 135d + ld a, b ; 135e + and $f0 ; 135f + swap a ; 1361 + set 6, a ; 1363 + ld b, a ; 1365 + call Function323d ; 1366 + ld b, h ; 1369 + ld c, l ; 136a + pop hl ; 136b + ret ; 136c +; 136d + +Function136d:: + push hl ; 136d + push bc ; 136e + call Function935 ; 136f + ldh a, [$ffaa] ; 1372 + and $3 ; 1374 + jr nz, Function137d ; 1376 + ld c, $1e ; 1378 + call Function33c ; 137a + pop bc ; 137d + pop hl ; 137e + ret ; 137f +; 1380 + +Function1380:: + push bc ; 1380 + dec hl ; 1381 + ld a, [hli] ; 1382 + ld b, a ; 1383 + push hl ; 1384 + ld hl, $13ad ; 1385 + ld a, [hli] ; 1388 + cp $ff ; 1389 + jr z, Function139f ; 138b + cp b ; 138d + jr z, Function1394 ; 138e + inc hl ; 1390 + inc hl ; 1391 + jr Function1388 ; 1392 +; 1394 + +Function1394:: + push de ; 1394 + ld e, [hl] ; 1395 + inc hl ; 1396 + ld d, [hl] ; 1397 + call Function3e24 ; 1398 + call Function3e56 ; 139b + pop de ; 139e + pop hl ; 139f + pop bc ; 13a0 + ret ; 13a1 +; 13a2 + +Function13a2:: + push de ; 13a2 + ld e, [hl] ; 13a3 + inc hl ; 13a4 + ld d, [hl] ; 13a5 + call Function39f9 ; 13a6 + pop de ; 13a9 + pop hl ; 13aa + pop bc ; 13ab + ret ; 13ac +; 13ad + +Function13ad:: + dec bc ; 13ad + nop ; 13ae + nop ; 13af + ld [de], a ; 13b0 + dec l ; 13b1 + nop ; 13b2 + ld c, $9 ; 13b3 + nop ; 13b5 + rrca ; 13b6 + ld bc, $1000 ; 13b7 + ld [bc], a ; 13ba + nop ; 13bb + ld de, $a ; 13bc + inc de ; 13bf + inc l ; 13c0 + nop ; 13c1 + rst $38 ; 13c2 + ld a, [hli] ; 13c3 + ld d, a ; 13c4 + push hl ; 13c5 + ld h, b ; 13c6 + ld l, c ; 13c7 + push de ; 13c8 + ld a, $75 ; 13c9 + ld [hli], a ; 13cb + call Function935 ; 13cc + ldh a, [$ffaa] ; 13cf + and $3 ; 13d1 + jr nz, Function13da ; 13d3 + ld c, $a ; 13d5 + call Function33c ; 13d7 + pop de ; 13da + dec d ; 13db + jr nz, Function13c8 ; 13dc + ld b, h ; 13de + ld c, l ; 13df + pop hl ; 13e0 + ret ; 13e1 +; 13e2 + +Function13e2:: + push hl ; 13e2 + push bc ; 13e3 + call Functiona60 ; 13e4 + pop bc ; 13e7 + pop hl ; 13e8 + ret ; 13e9 +; 13ea + +Function13ea:: + ld a, [hli] ; 13ea + push hl ; 13eb + ld e, a ; 13ec + ld d, $0 ; 13ed + ld hl, $4000 ; 13ef + add hl, de ; 13f2 + add hl, de ; 13f3 + ld a, $9 ; 13f4 + call Function313c ; 13f6 + ld d, h ; 13f9 + ld e, l ; 13fa + ld h, b ; 13fb + ld l, c ; 13fc + call Functionf74 ; 13fd + pop hl ; 1400 + ret ; 1401 +; 1402 + +Function1402:: + call Function35b9 ; 1402 + push hl ; 1405 + push bc ; 1406 + ld c, a ; 1407 + ld b, $0 ; 1408 + ld hl, $1422 ; 140a + add hl, bc ; 140d + add hl, bc ; 140e + ld a, [hli] ; 140f + ld h, [hl] ; 1410 + ld l, a ; 1411 + ld d, h ; 1412 + ld e, l ; 1413 + pop hl ; 1414 + call Functionf74 ; 1415 + ld h, b ; 1418 + ld l, c ; 1419 + ld de, $1454 ; 141a + call Functionf74 ; 141d + pop hl ; 1420 + ret ; 1421 +; 1422 + +Function1422:: + jr nc, Function1438 ; 1422 + inc [hl] ; 1424 + inc d ; 1425 + jr c, Function143c ; 1426 + dec a ; 1428 + inc d ; 1429 + ld b, h ; 142a + inc d ; 142b + ld c, d ; 142c + inc d ; 142d + ld c, [hl] ; 142e + inc d ; 142f + sub d ; 1430 + sub h ; 1431 + adc l ; 1432 + ld d, b ; 1433 + adc h ; 1434 + adc [hl] ; 1435 + adc l ; 1436 + ld d, b ; 1437 + sub e ; 1438 + sub h ; 1439 + add h ; 143a + sub d ; 143b + ld d, b ; 143c + sub [hl] ; 143d + add h ; 143e + add e ; 143f + adc l ; 1440 + add h ; 1441 + sub d ; 1442 + ld d, b ; 1443 + sub e ; 1444 + add a ; 1445 + sub h ; 1446 + sub c ; 1447 + sub d ; 1448 + ld d, b ; 1449 + add l ; 144a + sub c ; 144b + adc b ; 144c + ld d, b ; 144d + sub d ; 144e + add b ; 144f + sub e ; 1450 + sub h ; 1451 + sub c ; 1452 + ld d, b ; 1453 + add e ; 1454 + add b ; 1455 + sbc b ; 1456 + ld d, b ; 1457 + ldh a, [$ffdd] ; 1458 + and a ; 145a + ret z ; 145b + ld [$ffdb], sp ; 145c + ld hl, $cc70 ; 145f + ld sp, hl ; 1462 + ld hl, $cc48 ; 1463 + ld de, $cc20 ; 1466 + pop bc ; 1469 + ld a, $1 ; 146a + ldh [$ff4f], a ; 146c + ld a, [hli] ; 146e + ld [bc], a ; 146f + inc c ; 1470 + ld a, [hli] ; 1471 + ld [bc], a ; 1472 + dec c ; 1473 + ld a, $0 ; 1474 + ldh [$ff4f], a ; 1476 + ld a, [de] ; 1478 + inc de ; 1479 + ld [bc], a ; 147a + inc c ; 147b + ld a, [de] ; 147c + inc de ; 147d + ld [bc], a ; 147e + pop bc ; 147f + ld a, $1 ; 1480 + ldh [$ff4f], a ; 1482 + ld a, [hli] ; 1484 + ld [bc], a ; 1485 + inc c ; 1486 + ld a, [hli] ; 1487 + ld [bc], a ; 1488 + dec c ; 1489 + ld a, $0 ; 148a + ldh [$ff4f], a ; 148c + ld a, [de] ; 148e + inc de ; 148f + ld [bc], a ; 1490 + inc c ; 1491 + ld a, [de] ; 1492 + inc de ; 1493 + ld [bc], a ; 1494 + ldh a, [$ffde] ; 1495 + dec a ; 1497 + dec a ; 1498 + ldh [$ffde], a ; 1499 + jr nz, Function1469 ; 149b + ldh a, [$ffdb] ; 149d + ld l, a ; 149f + ldh a, [$ffdc] ; 14a0 + ld h, a ; 14a2 + ld sp, hl ; 14a3 + xor a ; 14a4 + ldh [$ffdd], a ; 14a5 + scf ; 14a7 + ret ; 14a8 +; 14a9 + +Function14a9:: + ldh a, [$ffd6] ; 14a9 + and a ; 14ab + ret z ; 14ac + ldh a, [$ffd7] ; 14ad + and a ; 14af + jr z, Function14b7 ; 14b0 + call Function32e ; 14b2 + jr Function14a9 ; 14b5 +; 14b7 + +Function14b7:: + xor a ; 14b7 + ldh [$ffd6], a ; 14b8 + ret ; 14ba +; 14bb + +Function14bb:: + ldh a, [$ffd6] ; 14bb + and a ; 14bd + ret z ; 14be + dec a ; 14bf + jr z, Function14f9 ; 14c0 + dec a ; 14c2 + jr z, Function14ea ; 14c3 + dec a ; 14c5 + ldh a, [$ffd8] ; 14c6 + ld l, a ; 14c8 + ldh a, [$ffd9] ; 14c9 + ld h, a ; 14cb + push hl ; 14cc + xor a ; 14cd + ldh [$ffd8], a ; 14ce + ld a, $9c ; 14d0 + ldh [$ffd9], a ; 14d2 + ldh a, [$ffd6] ; 14d4 + push af ; 14d6 + cp $3 ; 14d7 + call z, Function14f9 ; 14d9 + pop af ; 14dc + cp $4 ; 14dd + call z, Function14ea ; 14df + pop hl ; 14e2 + ld a, l ; 14e3 + ldh [$ffd8], a ; 14e4 + ld a, h ; 14e6 + ldh [$ffd9], a ; 14e7 + ret ; 14e9 +; 14ea + +Function14ea:: + ld a, $1 ; 14ea + ldh [$ff4f], a ; 14ec + ld hl, $ccd9 ; 14ee + call Function14fc ; 14f1 + ld a, $0 ; 14f4 + ldh [$ff4f], a ; 14f6 + ret ; 14f8 +; 14f9 + +Function14f9:: + ld hl, $c3a0 ; 14f9 + ld [$ffdb], sp ; 14fc + ldh a, [$ffd7] ; 14ff + and a ; 1501 + jr z, Function152c ; 1502 + dec a ; 1504 + jr z, Function1519 ; 1505 + ld de, $f0 ; 1507 + add hl, de ; 150a + ld sp, hl ; 150b + ldh a, [$ffd9] ; 150c + ld h, a ; 150e + ldh a, [$ffd8] ; 150f + ld l, a ; 1511 + ld de, $180 ; 1512 + add hl, de ; 1515 + xor a ; 1516 + jr Function1535 ; 1517 +; 1519 + +Function1519:: + ld de, $78 ; 1519 + add hl, de ; 151c + ld sp, hl ; 151d + ldh a, [$ffd9] ; 151e + ld h, a ; 1520 + ldh a, [$ffd8] ; 1521 + ld l, a ; 1523 + ld de, $c0 ; 1524 + add hl, de ; 1527 + ld a, $2 ; 1528 + jr Function1535 ; 152a +; 152c + +Function152c:: + ld sp, hl ; 152c + ldh a, [$ffd9] ; 152d + ld h, a ; 152f + ldh a, [$ffd8] ; 1530 + ld l, a ; 1532 + ld a, $1 ; 1533 + ldh [$ffd7], a ; 1535 + ld a, $6 ; 1537 + ld bc, $d ; 1539 + pop de ; 153c + ld [hl], e ; 153d + inc l ; 153e + ld [hl], d ; 153f + inc l ; 1540 + pop de ; 1541 + ld [hl], e ; 1542 + inc l ; 1543 + ld [hl], d ; 1544 + inc l ; 1545 + pop de ; 1546 + ld [hl], e ; 1547 + inc l ; 1548 + ld [hl], d ; 1549 + inc l ; 154a + pop de ; 154b + ld [hl], e ; 154c + inc l ; 154d + ld [hl], d ; 154e + inc l ; 154f + pop de ; 1550 + ld [hl], e ; 1551 + inc l ; 1552 + ld [hl], d ; 1553 + inc l ; 1554 + pop de ; 1555 + ld [hl], e ; 1556 + inc l ; 1557 + ld [hl], d ; 1558 + inc l ; 1559 + pop de ; 155a + ld [hl], e ; 155b + inc l ; 155c + ld [hl], d ; 155d + inc l ; 155e + pop de ; 155f + ld [hl], e ; 1560 + inc l ; 1561 + ld [hl], d ; 1562 + inc l ; 1563 + pop de ; 1564 + ld [hl], e ; 1565 + inc l ; 1566 + ld [hl], d ; 1567 + inc l ; 1568 + pop de ; 1569 + ld [hl], e ; 156a + inc l ; 156b + ld [hl], d ; 156c + add hl, bc ; 156d + dec a ; 156e + jr nz, Function153c ; 156f + ldh a, [$ffdb] ; 1571 + ld l, a ; 1573 + ldh a, [$ffdc] ; 1574 + ld h, a ; 1576 + ld sp, hl ; 1577 + ret ; 1578 +; 1579 + +Function1579:: + ld a, [$ce6c] ; 1579 + and a ; 157c + ret z ; 157d + ld [$ffdb], sp ; 157e + ld hl, $ce6d ; 1581 + ld a, [hli] ; 1584 + ld h, [hl] ; 1585 + ld l, a ; 1586 + ld sp, hl ; 1587 + ld hl, $ce6f ; 1588 + ld a, [hli] ; 158b + ld h, [hl] ; 158c + ld l, a ; 158d + ld a, [$ce6c] ; 158e + ld b, a ; 1591 + xor a ; 1592 + ld [$ce6c], a ; 1593 + pop de ; 1596 + ld [hl], e ; 1597 + inc l ; 1598 + ld [hl], e ; 1599 + inc l ; 159a + ld [hl], d ; 159b + inc l ; 159c + ld [hl], d ; 159d + inc l ; 159e + pop de ; 159f + ld [hl], e ; 15a0 + inc l ; 15a1 + ld [hl], e ; 15a2 + inc l ; 15a3 + ld [hl], d ; 15a4 + inc l ; 15a5 + ld [hl], d ; 15a6 + inc l ; 15a7 + pop de ; 15a8 + ld [hl], e ; 15a9 + inc l ; 15aa + ld [hl], e ; 15ab + inc l ; 15ac + ld [hl], d ; 15ad + inc l ; 15ae + ld [hl], d ; 15af + inc l ; 15b0 + pop de ; 15b1 + ld [hl], e ; 15b2 + inc l ; 15b3 + ld [hl], e ; 15b4 + inc l ; 15b5 + ld [hl], d ; 15b6 + inc l ; 15b7 + ld [hl], d ; 15b8 + inc hl ; 15b9 + dec b ; 15ba + jr nz, Function1596 ; 15bb + ld a, l ; 15bd + ld [$ce6f], a ; 15be + ld a, h ; 15c1 + ld [$ce70], a ; 15c2 + ld [$ce6d], sp ; 15c5 + ldh a, [$ffdb] ; 15c8 + ld l, a ; 15ca + ldh a, [$ffdc] ; 15cb + ld h, a ; 15cd + ld sp, hl ; 15ce + ret ; 15cf +; 15d0 + +Function15d0:: + ld a, [$ce67] ; 15d0 + and a ; 15d3 + ret z ; 15d4 + ld [$ffdb], sp ; 15d5 + ld hl, $ce68 ; 15d8 + ld a, [hli] ; 15db + ld h, [hl] ; 15dc + ld l, a ; 15dd + ld sp, hl ; 15de + ld hl, $ce6a ; 15df + ld a, [hli] ; 15e2 + ld h, [hl] ; 15e3 + ld l, a ; 15e4 + ld a, [$ce67] ; 15e5 + ld b, a ; 15e8 + xor a ; 15e9 + ld [$ce67], a ; 15ea + pop de ; 15ed + ld [hl], e ; 15ee + inc l ; 15ef + ld [hl], d ; 15f0 + inc l ; 15f1 + pop de ; 15f2 + ld [hl], e ; 15f3 + inc l ; 15f4 + ld [hl], d ; 15f5 + inc l ; 15f6 + pop de ; 15f7 + ld [hl], e ; 15f8 + inc l ; 15f9 + ld [hl], d ; 15fa + inc l ; 15fb + pop de ; 15fc + ld [hl], e ; 15fd + inc l ; 15fe + ld [hl], d ; 15ff + inc l ; 1600 + pop de ; 1601 + ld [hl], e ; 1602 + inc l ; 1603 + ld [hl], d ; 1604 + inc l ; 1605 + pop de ; 1606 + ld [hl], e ; 1607 + inc l ; 1608 + ld [hl], d ; 1609 + inc l ; 160a + pop de ; 160b + ld [hl], e ; 160c + inc l ; 160d + ld [hl], d ; 160e + inc l ; 160f + pop de ; 1610 + ld [hl], e ; 1611 + inc l ; 1612 + ld [hl], d ; 1613 + inc hl ; 1614 + dec b ; 1615 + jr nz, Function15ed ; 1616 + ld a, l ; 1618 + ld [$ce6a], a ; 1619 + ld a, h ; 161c + ld [$ce6b], a ; 161d + ld [$ce68], sp ; 1620 + ldh a, [$ffdb] ; 1623 + ld l, a ; 1625 + ldh a, [$ffdc] ; 1626 + ld h, a ; 1628 + ld sp, hl ; 1629 + ret ; 162a +; 162b + +Function162b:: + ldh a, [$ffe0] ; 162b + and a ; 162d + ret z ; 162e + ldh a, [hROMBank] ; 162f + push af ; 1631 + ld a, $3f ; 1632 + rst Bankswitch ; 1634 + call Function4003 ; 1635 + pop af ; 1638 + rst Bankswitch ; 1639 + ret ; 163a +; 163b + +Function163b:: + ret ; 163b + ld hl, $ff40 ; 163c + set 1, [hl] ; 163f + ret ; 1641 +; 1642 + +Function1642:: + nop ; 1642 + ldh a, [$ff9e] ; 1643 + and a ; 1645 + ret z ; 1646 + dec a ; 1647 + jr z, Function1677 ; 1648 + dec a ; 164a + jr z, Function1670 ; 164b + ld a, $2 ; 164d + ldh [$ff9e], a ; 164f + ld hl, $ffd8 ; 1651 + ld a, [hli] ; 1654 + ld h, [hl] ; 1655 + ld l, a ; 1656 + ld de, $14 ; 1657 + add hl, de ; 165a + ld b, $12 ; 165b + ld a, $60 ; 165d + ld [hli], a ; 165f + ld [hli], a ; 1660 + ld [hli], a ; 1661 + ld [hli], a ; 1662 + ld [hli], a ; 1663 + ld [hli], a ; 1664 + ld [hli], a ; 1665 + ld [hli], a ; 1666 + ld [hli], a ; 1667 + ld [hli], a ; 1668 + ld [hli], a ; 1669 + ld [hli], a ; 166a + add hl, de ; 166b + dec b ; 166c + jr nz, Function165f ; 166d + ret ; 166f +; 1670 + +Function1670:: + ld a, $1 ; 1670 + ld de, $240 ; 1672 + jr Function167b ; 1675 +; 1677 + +Function1677:: + xor a ; 1677 + ld de, $320 ; 1678 + ldh [$ff9e], a ; 167b + ld hl, $ffd8 ; 167d + ld a, [hli] ; 1680 + ld h, [hl] ; 1681 + ld l, a ; 1682 + add hl, de ; 1683 + ld b, $e ; 1684 + ld a, $60 ; 1686 + ld [hli], a ; 1688 + ld [hli], a ; 1689 + ld [hli], a ; 168a + ld [hli], a ; 168b + ld [hli], a ; 168c + ld [hli], a ; 168d + ld [hli], a ; 168e + ld [hli], a ; 168f + ld [hli], a ; 1690 + ld [hli], a ; 1691 + ld [hli], a ; 1692 + ld [hli], a ; 1693 + ld [hli], a ; 1694 + ld [hli], a ; 1695 + ld [hli], a ; 1696 + ld [hli], a ; 1697 + dec b ; 1698 + jr nz, Function1688 ; 1699 + ret ; 169b +; 169c + +Function169c:: + push hl ; 169c + push de ; 169d + push bc ; 169e + ld c, a ; 169f + ld a, $5 ; 16a0 + ld hl, $4334 ; 16a2 + rst FarCall ; 16a5 + ld a, c ; 16a6 + pop bc ; 16a7 + pop de ; 16a8 + pop hl ; 16a9 + ret ; 16aa +; 16ab + +Function16ab:: + push hl ; 16ab + push bc ; 16ac + ld hl, $d05f ; 16ad + ld c, $b ; 16b0 + ld b, a ; 16b2 + ldh a, [$ffb1] ; 16b3 + cp $0 ; 16b5 + jr z, Function16c8 ; 16b7 + ld a, b ; 16b9 + cp [hl] ; 16ba + jr z, Function16cd ; 16bb + inc hl ; 16bd + inc hl ; 16be + dec c ; 16bf + jr nz, Function16ba ; 16c0 + ld a, [$d05e] ; 16c2 + scf ; 16c5 + jr Function16d0 ; 16c6 +; 16c8 + +Function16c8:: + ld a, [$d05e] ; 16c8 + jr Function16d0 ; 16cb +; 16cd + +Function16cd:: + inc hl ; 16cd + xor a ; 16ce + ld a, [hl] ; 16cf + pop bc ; 16d0 + pop hl ; 16d1 + ret ; 16d2 +; 16d3 + +Function16d3:: + push de ; 16d3 + push hl ; 16d4 + ld b, a ; 16d5 + ldh a, [hROMBank] ; 16d6 + push af ; 16d8 + ld a, $5 ; 16d9 + rst Bankswitch ; 16db + ld a, b ; 16dc + call Function4317 ; 16dd + ld c, a ; 16e0 + pop de ; 16e1 + ld a, d ; 16e2 + rst Bankswitch ; 16e3 + pop hl ; 16e4 + pop de ; 16e5 + ret ; 16e6 +; 16e7 + +Function16e7:: + ld a, [$d20b] ; 16e7 + call Function16fa ; 16ea + ld b, a ; 16ed + ret ; 16ee +; 16ef + +Function16ef:: + ld a, [$d20b] ; 16ef + call Function16fa ; 16f2 + sub a, $1 ; 16f5 + ret z ; 16f7 + and a ; 16f8 + ret ; 16f9 +; 16fa + +Function16fa:: + push de ; 16fa + push hl ; 16fb + ld hl, $74be ; 16fc + ld e, a ; 16ff + ld d, $0 ; 1700 + add hl, de ; 1702 + ldh a, [hROMBank] ; 1703 + push af ; 1705 + ld a, $3e ; 1706 + rst Bankswitch ; 1708 + ld e, [hl] ; 1709 + pop af ; 170a + rst Bankswitch ; 170b + ld a, e ; 170c + and $f ; 170d + pop hl ; 170f + pop de ; 1710 + ret ; 1711 +; 1712 + +Function1712:: + ld d, a ; 1712 + and $f0 ; 1713 + cp $10 ; 1715 + jr z, Function171f ; 1717 + cp $20 ; 1719 + jr z, Function1725 ; 171b + scf ; 171d + ret ; 171e +; 171f + +Function171f:: + ld a, d ; 171f + and $7 ; 1720 + ret z ; 1722 + scf ; 1723 + ret ; 1724 +; 1725 + +Function1725:: + ld a, d ; 1725 + and $7 ; 1726 + ret z ; 1728 + scf ; 1729 + ret ; 172a +; 172b + +Function172b:: + cp $14 ; 172b + ret z ; 172d + cp $1c ; 172e + ret ; 1730 +; 1731 + +Function1731:: + cp $12 ; 1731 + ret z ; 1733 + cp $1a ; 1734 + ret ; 1736 +; 1737 + +Function1737:: + cp $15 ; 1737 + ret z ; 1739 + cp $1d ; 173a + ret ; 173c +; 173d + +Function173d:: + cp $90 ; 173d + ret z ; 173f + cp $98 ; 1740 + ret ; 1742 +; 1743 + +Function1743:: + cp $60 ; 1743 + ret z ; 1745 + cp $68 ; 1746 + ret ; 1748 +; 1749 + +Function1749:: + cp $23 ; 1749 + ret z ; 174b + cp $2b ; 174c + ret z ; 174e + scf ; 174f + ret ; 1750 +; 1751 + +Function1751:: + nop ; 1751 + cp $24 ; 1752 + ret z ; 1754 + cp $2c ; 1755 + ret z ; 1757 + scf ; 1758 + ret ; 1759 +; 175a + +Function175a:: + cp $33 ; 175a + ret z ; 175c + cp $3b ; 175d + ret ; 175f +; 1760 + +Function1760:: + ld a, [$d20b] ; 1760 + cp $71 ; 1763 + ret z ; 1765 + cp $79 ; 1766 + ret z ; 1768 + cp $7a ; 1769 + ret z ; 176b + cp $7b ; 176c + ret ; 176e +; 176f + +Function176f:: + ld hl, $d445 ; 176f + ld bc, $10 ; 1772 + call Function31a3 ; 1775 + ld b, h ; 1778 + ld c, l ; 1779 + ret ; 177a +; 177b + +Function177b:: + ldh [$ffb1], a ; 177b + call Function176f ; 177d + ld hl, $0 ; 1780 + add hl, bc ; 1783 + ld a, [hl] ; 1784 + cp $ff ; 1785 + jr z, Function1790 ; 1787 + ldh [$ffb2], a ; 1789 + call Function1982 ; 178b + and a ; 178e + ret ; 178f +; 1790 + +Function1790:: + scf ; 1790 + ret ; 1791 +; 1792 + +Function1792:: + ld hl, $6 ; 1792 + add hl, bc ; 1795 + ld a, [hl] ; 1796 + cp $ff ; 1797 + jr nz, Function17be ; 1799 + ld hl, $7 ; 179b + add hl, bc ; 179e + ld a, [hl] ; 179f + cp $ff ; 17a0 + jr z, Function17b9 ; 17a2 + ld hl, $17bb ; 17a4 + ld a, [$d157] ; 17a7 + add l ; 17aa + ld l, a ; 17ab + jr nc, Function17af ; 17ac + inc h ; 17ae + ld a, [hl] ; 17af + ld hl, $7 ; 17b0 + add hl, bc ; 17b3 + and [hl] ; 17b4 + jr nz, Function17b9 ; 17b5 + scf ; 17b7 + ret ; 17b8 +; 17b9 + +Function17b9:: + and a ; 17b9 + ret ; 17ba +; 17bb + +Function17bb:: + ld bc, $402 ; 17bb + ld hl, $6 ; 17be + add hl, bc ; 17c1 + ld d, [hl] ; 17c2 + ld hl, $7 ; 17c3 + add hl, bc ; 17c6 + ld e, [hl] ; 17c7 + ld hl, $ff96 ; 17c8 + ld a, d ; 17cb + cp e ; 17cc + jr z, Function17e6 ; 17cd + jr c, Function17dc ; 17cf + ld a, [hl] ; 17d1 + cp d ; 17d2 + jr nc, Function17e6 ; 17d3 + cp e ; 17d5 + jr c, Function17e6 ; 17d6 + jr z, Function17e6 ; 17d8 + jr Function17e8 ; 17da +; 17dc + +Function17dc:: + ld a, e ; 17dc + cp [hl] ; 17dd + jr c, Function17e8 ; 17de + ld a, [hl] ; 17e0 + cp d ; 17e1 + jr nc, Function17e6 ; 17e2 + jr Function17e8 ; 17e4 +; 17e6 + +Function17e6:: + and a ; 17e6 + ret ; 17e7 +; 17e8 + +Function17e8:: + scf ; 17e8 + ret ; 17e9 +; 17ea + +Function17ea:: + ldh [$ffb1], a ; 17ea + call Function176f ; 17ec + call Function46d7 ; 17ef + ret ; 17f2 +; 17f3 + +Function17f3:: + ldh [$ffb1], a ; 17f3 + call Function2841 ; 17f5 + ldh a, [$ffb1] ; 17f8 + call Function176f ; 17fa + ld a, $2 ; 17fd + ld hl, $46d7 ; 17ff + rst FarCall ; 1802 + ret ; 1803 +; 1804 + +Function1804:: + ldh [$ffb1], a ; 1804 + call Function176f ; 1806 + ld hl, $0 ; 1809 + add hl, bc ; 180c + ld a, [hl] ; 180d + cp $ff ; 180e + ret z ; 1810 + ld [hl], $ff ; 1811 + push af ; 1813 + call Function1822 ; 1814 + pop af ; 1817 + call Function1982 ; 1818 + ld a, $1 ; 181b + ld hl, $4358 ; 181d + rst FarCall ; 1820 + ret ; 1821 +; 1822 + +Function1822:: + ld hl, $d1f4 ; 1822 + cp [hl] ; 1825 + jr z, Function182d ; 1826 + ld hl, $d1f5 ; 1828 + cp [hl] ; 182b + ret nz ; 182c + ld a, $1 ; 182d + ld hl, $5795 ; 182f + rst FarCall ; 1832 + ld a, $ff ; 1833 + ld [$d1f4], a ; 1835 + ld [$d1f5], a ; 1838 + ret ; 183b +; 183c + +Function183c:: + call Function1804 ; 183c + call Function2835 ; 183f + ret ; 1842 +; 1843 + +Function1843:: + push hl ; 1843 + call Function176f ; 1844 + ld d, b ; 1847 + ld e, c ; 1848 + ld a, $ff ; 1849 + ld [de], a ; 184b + inc de ; 184c + pop hl ; 184d + ld bc, $f ; 184e + call Function311a ; 1851 + ret ; 1854 +; 1855 + +Function1855:: + call Function176f ; 1855 + ld hl, $0 ; 1858 + add hl, bc ; 185b + ld a, [hl] ; 185c + push af ; 185d + ld [hl], $ff ; 185e + inc hl ; 1860 + ld bc, $f ; 1861 + xor a ; 1864 + call Function314c ; 1865 + pop af ; 1868 + cp $ff ; 1869 + ret z ; 186b + cp $d ; 186c + ret nc ; 186e + ld b, a ; 186f + ld a, [$d1f4] ; 1870 + cp b ; 1873 + jr nz, Function187b ; 1874 + ld a, $ff ; 1876 + ld [$d1f4], a ; 1878 + ld a, b ; 187b + call Function1982 ; 187c + ld a, $1 ; 187f + ld hl, $4358 ; 1881 + rst FarCall ; 1884 + ret ; 1885 +; 1886 + +Function1886:: + ld [$ce8b], a ; 1886 + ldh a, [hROMBank] ; 1889 + ld [$ce8c], a ; 188b + ld a, l ; 188e + ld [$ce8d], a ; 188f + ld a, h ; 1892 + ld [$ce8e], a ; 1893 + ld a, [$ce8b] ; 1896 + call Function177b ; 1899 + ret c ; 189c + ld hl, $3 ; 189d + add hl, bc ; 18a0 + ld [hl], $14 ; 18a1 + ld hl, $9 ; 18a3 + add hl, bc ; 18a6 + ld [hl], $0 ; 18a7 + ld hl, $cfe5 ; 18a9 + set 7, [hl] ; 18ac + and a ; 18ae + ret ; 18af +; 18b0 + +Function18b0:: + push bc ; 18b0 + push de ; 18b1 + ld hl, $d1fd ; 18b2 + ld de, $28 ; 18b5 + ld c, $d ; 18b8 + ld a, [hl] ; 18ba + and a ; 18bb + jr z, Function18c5 ; 18bc + add hl, de ; 18be + dec c ; 18bf + jr nz, Function18ba ; 18c0 + xor a ; 18c2 + jr Function18c9 ; 18c3 +; 18c5 + +Function18c5:: + ld a, $d ; 18c5 + sub c ; 18c7 + scf ; 18c8 + pop de ; 18c9 + pop bc ; 18ca + ret ; 18cb +; 18cc + +Function18cc:: + ld hl, $3 ; 18cc + add hl, bc ; 18cf + ld a, [hl] ; 18d0 + cp $25 ; 18d1 + jr c, Function18d6 ; 18d3 + xor a ; 18d5 + ld hl, $4274 ; 18d6 + ld e, a ; 18d9 + ld d, $0 ; 18da + add hl, de ; 18dc + add hl, de ; 18dd + add hl, de ; 18de + add hl, de ; 18df + add hl, de ; 18e0 + add hl, de ; 18e1 + ld a, [hl] ; 18e2 + ret ; 18e3 +; 18e4 + +Function18e4:: + push bc ; 18e4 + push de ; 18e5 + ld e, a ; 18e6 + ld d, $0 ; 18e7 + ld hl, $4275 ; 18e9 + add hl, de ; 18ec + add hl, de ; 18ed + add hl, de ; 18ee + add hl, de ; 18ef + add hl, de ; 18f0 + add hl, de ; 18f1 + ld a, $1 ; 18f2 + call Function3128 ; 18f4 + add a ; 18f7 + add a ; 18f8 + and $c ; 18f9 + pop de ; 18fb + pop bc ; 18fc + ret ; 18fd +; 18fe + +Function18fe:: + ld l, a ; 18fe + ldh a, [hROMBank] ; 18ff + push af ; 1901 + ld a, $1 ; 1902 + rst Bankswitch ; 1904 + ld a, l ; 1905 + push bc ; 1906 + call Function190e ; 1907 + pop bc ; 190a + pop af ; 190b + rst Bankswitch ; 190c + ret ; 190d +; 190e + +Function190e:: + ld hl, $3 ; 190e + add hl, de ; 1911 + ld [hl], a ; 1912 + push de ; 1913 + ld e, a ; 1914 + ld d, $0 ; 1915 + ld hl, $4275 ; 1917 + add hl, de ; 191a + add hl, de ; 191b + add hl, de ; 191c + add hl, de ; 191d + add hl, de ; 191e + add hl, de ; 191f + ld b, h ; 1920 + ld c, l ; 1921 + pop de ; 1922 + ld a, [bc] ; 1923 + inc bc ; 1924 + rlca ; 1925 + rlca ; 1926 + and $c ; 1927 + ld hl, $8 ; 1929 + add hl, de ; 192c + ld [hl], a ; 192d + ld a, [bc] ; 192e + inc bc ; 192f + ld hl, $b ; 1930 + add hl, de ; 1933 + ld [hl], a ; 1934 + ld a, [bc] ; 1935 + inc bc ; 1936 + ld hl, $4 ; 1937 + add hl, de ; 193a + ld [hl], a ; 193b + ld a, [bc] ; 193c + inc bc ; 193d + ld hl, $5 ; 193e + add hl, de ; 1941 + ld [hl], a ; 1942 + ld a, [bc] ; 1943 + inc bc ; 1944 + ld hl, $6 ; 1945 + add hl, de ; 1948 + ld [hl], a ; 1949 + ret ; 194a +; 194b + +Function194b:: + ldh a, [hROMBank] ; 194b + push af ; 194d + ld a, [hli] ; 194e + rst Bankswitch ; 194f + ld a, [hli] ; 1950 + ld d, [hl] ; 1951 + ld hl, $1b ; 1952 + add hl, bc ; 1955 + add [hl] ; 1956 + ld e, a ; 1957 + ld a, d ; 1958 + adc a, $0 ; 1959 + ld d, a ; 195b + inc [hl] ; 195c + ld a, [de] ; 195d + ld h, a ; 195e + pop af ; 195f + rst Bankswitch ; 1960 + ld a, h ; 1961 + ret ; 1962 +; 1963 + +Function1963:: + ld hl, $cfe5 ; 1963 + set 0, [hl] ; 1966 + ret ; 1968 +; 1969 + +Function1969:: + ld hl, $cfe5 ; 1969 + res 0, [hl] ; 196c + ret ; 196e +; 196f + +Function196f:: + ld a, [$cfe5] ; 196f + bit 0, a ; 1972 + ret z ; 1974 + ld a, $1 ; 1975 + ld hl, $557f ; 1977 + rst FarCall ; 197a + ld a, $1 ; 197b + ld hl, $5896 ; 197d + rst FarCall ; 1980 + ret ; 1981 +; 1982 + +Function1982:: + ld bc, $28 ; 1982 + ld hl, $d1fd ; 1985 + call Function31a3 ; 1988 + ld b, h ; 198b + ld c, l ; 198c + ret ; 198d +; 198e + +Function198e:: + ld hl, $0 ; 198e + add hl, bc ; 1991 + ld a, [hl] ; 1992 + and a ; 1993 + ret ; 1994 +; 1995 + +Function1995:: + push af ; 1995 + ld hl, $8 ; 1996 + add hl, bc ; 1999 + ld a, [hl] ; 199a + and $f3 ; 199b + ld e, a ; 199d + pop af ; 199e + and $c ; 199f + or e ; 19a1 + ld [hl], a ; 19a2 + ret ; 19a3 +; 19a4 + +Function19a4:: + ld hl, $8 ; 19a4 + add hl, bc ; 19a7 + ld a, [hl] ; 19a8 + and $c ; 19a9 + ret ; 19ab +; 19ac + +Function19ac:: + add a, $10 ; 19ac + ld e, a ; 19ae + ldh a, [hROMBank] ; 19af + push af ; 19b1 + ld a, $2 ; 19b2 + rst Bankswitch ; 19b4 + call Function4ac9 ; 19b5 + pop af ; 19b8 + rst Bankswitch ; 19b9 + ret ; 19ba +; 19bb + +Function19bb:: + ld [$ceee], a ; 19bb + xor a ; 19be + ld [$ceed], a ; 19bf + ld a, $0 ; 19c2 + ld [$ceef], a ; 19c4 + ld a, $f2 ; 19c7 + ld [$cef0], a ; 19c9 + ld a, $ce ; 19cc + ld [$cef1], a ; 19ce + ret ; 19d1 +; 19d2 + +Function19d2:: + ld a, [$ceed] ; 19d2 + and a ; 19d5 + ret z ; 19d6 + dec a ; 19d7 + ld [$ceed], a ; 19d8 + ret ; 19db +; 19dc + +Function19dc:: + push hl ; 19dc + push de ; 19dd + ld hl, $ceed ; 19de + ld e, [hl] ; 19e1 + inc [hl] ; 19e2 + ld d, $0 ; 19e3 + ld hl, $cef2 ; 19e5 + add hl, de ; 19e8 + ld [hl], a ; 19e9 + pop de ; 19ea + pop hl ; 19eb + ret ; 19ec +; 19ed + +Function19ed:: + push af ; 19ed + ld a, c ; 19ee + and a ; 19ef + jr nz, Function19f4 ; 19f0 + pop af ; 19f2 + ret ; 19f3 +; 19f4 + +Function19f4:: + pop af ; 19f4 + call Function19dc ; 19f5 + dec c ; 19f8 + jr nz, Function19f5 ; 19f9 + ret ; 19fb +; 19fc + +Function19fc:: + push af ; 19fc + ld a, b ; 19fd + sub d ; 19fe + ld h, $2 ; 19ff + jr nc, Function1a07 ; 1a01 + dec a ; 1a03 + cpl ; 1a04 + ld h, $3 ; 1a05 + ld d, a ; 1a07 + ld a, c ; 1a08 + sub e ; 1a09 + ld l, $1 ; 1a0a + jr nc, Function1a12 ; 1a0c + dec a ; 1a0e + cpl ; 1a0f + ld l, $0 ; 1a10 + ld e, a ; 1a12 + cp d ; 1a13 + jr nc, Function1a1c ; 1a14 + ld a, h ; 1a16 + ld h, l ; 1a17 + ld l, a ; 1a18 + ld a, d ; 1a19 + ld d, e ; 1a1a + ld e, a ; 1a1b + pop af ; 1a1c + ld b, a ; 1a1d + ld a, h ; 1a1e + call Function1a2f ; 1a1f + ld c, d ; 1a22 + call Function19ed ; 1a23 + ld a, l ; 1a26 + call Function1a2f ; 1a27 + ld c, e ; 1a2a + call Function19ed ; 1a2b + ret ; 1a2e +; 1a2f + +Function1a2f:: + push de ; 1a2f + push hl ; 1a30 + ld l, b ; 1a31 + ld h, $0 ; 1a32 + add hl, hl ; 1a34 + add hl, hl ; 1a35 + ld e, a ; 1a36 + ld d, $0 ; 1a37 + add hl, deadd hl, de ; 1a39 ; 1a39 + ld de, $1a42 ; 1a3a + add hl, de ; 1a3d + ld a, [hl] ; 1a3e + pop hl ; 1a3f + pop de ; 1a40 + ret ; 1a41 +; 1a42 + +Function1a42:: + ld [$a09], sp ; 1a42 + dec bc ; 1a45 + inc c ; 1a46 + dec c ; 1a47 + ld c, $f ; 1a48 + <corrupted stop> ; 1a4a + ld [de], a ; 1a4c + inc de ; 1a4d + push hl ; 1a4e + push bc ; 1a4f + ld hl, $ced8 ; 1a50 + ld b, $8 ; 1a53 + ld a, [de] ; 1a55 + inc de ; 1a56 + ld [hli], a ; 1a57 + dec b ; 1a58 + jr nz, Function1a55 ; 1a59 + ld a, $1 ; 1a5b + ld [hli], a ; 1a5d + ld [hli], a ; 1a5e + xor a ; 1a5f + ld [hli], a ; 1a60 + ld [hli], a ; 1a61 + ld [hli], a ; 1a62 + pop bc ; 1a63 + pop hl ; 1a64 + ret ; 1a65 +; 1a66 + +Function1a66:: + ld hl, $4136 ; 1a66 + ld a, $9 ; 1a69 + rst FarCall ; 1a6b + call Function1a7a ; 1a6c + ret ; 1a6f +; 1a70 + +Function1a70:: + ld hl, $4139 ; 1a70 + ld a, $9 ; 1a73 + rst FarCall ; 1a75 + call Function1a7a ; 1a76 + ret ; 1a79 +; 1a7a + +Function1a7a:: + push bc ; 1a7a + push af ; 1a7b + ldh a, [$ffab] ; 1a7c + and $f0 ; 1a7e + ld b, a ; 1a80 + ldh a, [$ffa9] ; 1a81 + and $f ; 1a83 + or b ; 1a85 + ld b, a ; 1a86 + pop af ; 1a87 + ld a, b ; 1a88 + pop bc ; 1a89 + ret ; 1a8a +; 1a8b + +Function1a8b:: + ld hl, $cee3 ; 1a8b + ld a, [hli] ; 1a8e + ld h, [hl] ; 1a8f + ld l, a ; 1a90 + ld [hl], $ec ; 1a91 + ret ; 1a93 +; 1a94 + +Function1a94:: + ld hl, $cee3 ; 1a94 + ld a, [hli] ; 1a97 + ld h, [hl] ; 1a98 + ld l, a ; 1a99 + ld [hl], $7f ; 1a9a + ret ; 1a9c +; 1a9d + +Function1a9d:: + ld hl, $42a0 ; 1a9d + ld a, $9 ; 1aa0 + rst FarCall ; 1aa2 + ret ; 1aa3 +; 1aa4 + +Function1aa4:: + push af ; 1aa4 + ld hl, $4307 ; 1aa5 + ld a, $9 ; 1aa8 + rst FarCall ; 1aaa + pop af ; 1aab + ret ; 1aac +; 1aad + +Function1aad:: + ld hl, $4395 ; 1aad + ld a, $9 ; 1ab0 + rst FarCall ; 1ab2 + ret ; 1ab3 +; 1ab4 + +Function1ab4:: + push af ; 1ab4 + call Function1aa4 ; 1ab5 + call Function3472 ; 1ab8 + call Function196f ; 1abb + pop af ; 1abe + ret ; 1abf +; 1ac0 + +Function1ac0:: + call Function1b90 ; 1ac0 + call Function1ae6 ; 1ac3 + inc b ; 1ac6 + inc c ; 1ac7 + push bc ; 1ac8 + push hl ; 1ac9 + ld a, [de] ; 1aca + ld [hli], a ; 1acb + dec de ; 1acc + dec c ; 1acd + jr nz, Function1aca ; 1ace + pop hl ; 1ad0 + ld bc, $14 ; 1ad1 + add hl, bc ; 1ad4 + pop bc ; 1ad5 + dec b ; 1ad6 + jr nz, Function1ac8 ; 1ad7 + ret ; 1ad9 +; 1ada + +Function1ada:: + ld b, $10 ; 1ada + ld de, $ceb8 ; 1adc + ld a, [hld] ; 1adf + ld [de], a ; 1ae0 + inc de ; 1ae1 + dec b ; 1ae2 + jr nz, Function1adf ; 1ae3 + ret ; 1ae5 +; 1ae6 + +Function1ae6:: + ld a, [$ceb9] ; 1ae6 + ld b, a ; 1ae9 + ld a, [$cebb] ; 1aea + sub b ; 1aed + ld b, a ; 1aee + ld a, [$ceba] ; 1aef + ld c, a ; 1af2 + ld a, [$cebc] ; 1af3 + sub c ; 1af6 + ld c, a ; 1af7 + ret ; 1af8 +; 1af9 + +Function1af9:: + push hl ; 1af9 + push de ; 1afa + push bc ; 1afb + push af ; 1afc + ld hl, $cebd ; 1afd + ld a, [hli] ; 1b00 + ld h, [hl] ; 1b01 + ld l, a ; 1b02 + ld de, $cec8 ; 1b03 + ld bc, $10 ; 1b06 + call Function311a ; 1b09 + pop af ; 1b0c + pop bc ; 1b0d + pop de ; 1b0e + pop hl ; 1b0f + ret ; 1b10 +; 1b11 + +Function1b11:: + ld hl, $cea8 ; 1b11 + ld a, [hli] ; 1b14 + ld h, [hl] ; 1b15 + ld l, a ; 1b16 + inc hl ; 1b17 + ld a, [hli] ; 1b18 + ld h, [hl] ; 1b19 + ld l, a ; 1b1a + ret ; 1b1b +; 1b1c + +Function1b1c:: + call Function1af9 ; 1b1c + ld hl, $cebd ; 1b1f + ld e, [hl] ; 1b22 + inc hl ; 1b23 + ld d, [hl] ; 1b24 + call Function1b59 ; 1b25 + call Function1b98 ; 1b28 + inc de ; 1b2b + ld a, [de] ; 1b2c + inc de ; 1b2d + ld b, a ; 1b2e + push bc ; 1b2f + call Functionf74 ; 1b30 + inc de ; 1b33 + ld bc, $28 ; 1b34 + add hl, bc ; 1b37 + pop bc ; 1b38 + dec b ; 1b39 + jr nz, Function1b2f ; 1b3a + ld a, [$cec8] ; 1b3c + bit 4, a ; 1b3f + ret z ; 1b41 + call Function1b90 ; 1b42 + ld a, [de] ; 1b45 + ld c, a ; 1b46 + inc de ; 1b47 + ld b, $0 ; 1b48 + add hl, bc ; 1b4a + jp Functionf74 ; 1b4b +; 1b4e + +Function1b4e:: + call Function1b90 ; 1b4e + call Function1ae6 ; 1b51 + dec b ; 1b54 + dec c ; 1b55 + jp Functioneef ; 1b56 +; 1b59 + +Function1b59:: + ld a, [$ceb9] ; 1b59 + ld b, a ; 1b5c + inc b ; 1b5d + ld a, [$ceba] ; 1b5e + ld c, a ; 1b61 + inc c ; 1b62 + ld a, [$cec8] ; 1b63 + bit 6, a ; 1b66 + jr nz, Function1b6b ; 1b68 + inc b ; 1b6a + ld a, [$cec8] ; 1b6b + bit 7, a ; 1b6e + jr z, Function1b73 ; 1b70 + inc c ; 1b72 + ret ; 1b73 +; 1b74 + +Function1b74:: + call Function1b90 ; 1b74 + ld bc, $15 ; 1b77 + add hl, bc ; 1b7a + call Function1ae6 ; 1b7b + dec b ; 1b7e + dec c ; 1b7f + call Functionebd ; 1b80 + ret ; 1b83 +; 1b84 + +Function1b84:: + call Function1b90 ; 1b84 + call Function1ae6 ; 1b87 + inc c ; 1b8a + inc b ; 1b8b + call Functionebd ; 1b8c + ret ; 1b8f +; 1b90 + +Function1b90:: + ld a, [$ceba] ; 1b90 + ld c, a ; 1b93 + ld a, [$ceb9] ; 1b94 + ld b, a ; 1b97 + xor a ; 1b98 + ld h, a ; 1b99 + ld l, b ; 1b9a + ld a, c ; 1b9b + ld b, h ; 1b9c + ld c, l ; 1b9d + add hl, hl ; 1b9e + add hl, hl ; 1b9f + add hl, bc ; 1ba0 + add hl, hl ; 1ba1 + add hl, hl ; 1ba2 + ld c, a ; 1ba3 + xor a ; 1ba4 + ld b, a ; 1ba5 + add hl, bc ; 1ba6 + ld bc, $c3a0 ; 1ba7 + add hl, bc ; 1baa + ret ; 1bab +; 1bac + +Function1bac:: + call Function1bb3 ; 1bac + call Function1a9d ; 1baf + ret ; 1bb2 +; 1bb3 + +Function1bb3:: + ld de, $ceb8 ; 1bb3 + ld bc, $10 ; 1bb6 + call Function311a ; 1bb9 + ret ; 1bbc +; 1bbd + +Function1bbd:: + ld [$cebf], a ; 1bbd + ret ; 1bc0 +; 1bc1 + +Function1bc1:: + push hl ; 1bc1 + call Function1bca ; 1bc2 + pop hl ; 1bc5 + jp Functionf5e ; 1bc6 +; 1bc9 + +Function1bc9:: + ret ; 1bc9 +; 1bca + +Function1bca:: + ld hl, $1bd1 ; 1bca + call Function1bac ; 1bcd + ret ; 1bd0 +; 1bd1 + +Function1bd1:: + ld b, b ; 1bd1 + inc c ; 1bd2 + nop ; 1bd3 + ld de, $13 ; 1bd4 + add b ; 1bd7 + nop ; 1bd8 + call Function1bc1 ; 1bd9 + call Function1ab4 ; 1bdc + ret ; 1bdf +; 1be0 + +Function1be0:: + ld hl, $1be7 ; 1be0 + call Function1bac ; 1be3 + ret ; 1be6 +; 1be7 + +Function1be7:: + ld b, b ; 1be7 + nop ; 1be8 + nop ; 1be9 + ld de, $13 ; 1bea + nop ; 1bed + ld bc, $a4cd ; 1bee + ld a, [de] ; 1bf1 + ret ; 1bf2 +; 1bf3 + +Function1bf3:: + xor a ; 1bf3 + ldh [$ffd6], a ; 1bf4 + call Function1b4e ; 1bf6 + call Function196f ; 1bf9 + call Function1b1c ; 1bfc + call Function3472 ; 1bff + call Function1af9 ; 1c02 + ld a, [$cec8] ; 1c05 + bit 7, a ; 1c08 + jr z, Function1c19 ; 1c0a + call Function1aad ; 1c0c + call Function1a66 ; 1c0f + call Function1e5f ; 1c12 + bit 1, a ; 1c15 + jr z, Function1c1b ; 1c17 + scf ; 1c19 + ret ; 1c1a +; 1c1b + +Function1c1b:: + and a ; 1c1b + ret ; 1c1c +; 1c1d + +Function1c1d:: + call Function1bac ; 1c1d + call Function1bf3 ; 1c20 + call Function1ab4 ; 1c23 + ld a, [$cee0] ; 1c26 + ret ; 1c29 +; 1c2a + +Function1c2a:: + push hl ; 1c2a + push bc ; 1c2b + push af ; 1c2c + ld hl, $cebd ; 1c2d + ld a, [hli] ; 1c30 + ld h, [hl] ; 1c31 + ld l, a ; 1c32 + inc hl ; 1c33 + inc hl ; 1c34 + pop af ; 1c35 + call Function3654 ; 1c36 + ld d, h ; 1c39 + ld e, l ; 1c3a + call Function317b ; 1c3b + pop bc ; 1c3e + pop hl ; 1c3f + ret ; 1c40 +; 1c41 + +Function1c41:: + ld bc, $e07 ; 1c41 + jr Function1c4b ; 1c44 +; 1c46 + +Function1c46:: + call Function1bac ; 1c46 + jr Function1c68 ; 1c49 +; 1c4b + +Function1c4b:: + push bc ; 1c4b + ld hl, $1c87 ; 1c4c + call Function1bb3 ; 1c4f + pop bc ; 1c52 + ld a, b ; 1c53 + ld [$ceba], a ; 1c54 + add a, $5 ; 1c57 + ld [$cebc], a ; 1c59 + ld a, c ; 1c5c + ld [$ceb9], a ; 1c5d + add a, $4 ; 1c60 + ld [$cebb], a ; 1c62 + call Function1a9d ; 1c65 + call Function1bf3 ; 1c68 + push af ; 1c6b + ld c, $f ; 1c6c + call Function33c ; 1c6e + call Function1ab4 ; 1c71 + pop af ; 1c74 + jr c, Function1c80 ; 1c75 + ld a, [$cee0] ; 1c77 + cp $2 ; 1c7a + jr z, Function1c80 ; 1c7c + and a ; 1c7e + ret ; 1c7f +; 1c80 + +Function1c80:: + ld a, $2 ; 1c80 + ld [$cee0], a ; 1c82 + scf ; 1c85 + ret ; 1c86 +; 1c87 + +Function1c87:: + ld b, b ; 1c87 + dec b ; 1c88 + ld a, [bc] ; 1c89 + add hl, bc ; 1c8a + rrca ; 1c8b + adc a ; 1c8c + inc e ; 1c8d + ld bc, $2c0 ; 1c8e + sbc b ; 1c91 + add h ; 1c92 + sub d ; 1c93 + ld d, b ; 1c94 + adc l ; 1c95 + adc [hl] ; 1c96 + ld d, b ; 1c97 + call Function1c9f ; 1c98 + call Function1a9d ; 1c9b + ret ; 1c9e +; 1c9f + +Function1c9f:: + push de ; 1c9f + call Function1bb3 ; 1ca0 + pop de ; 1ca3 + ld a, [$ceba] ; 1ca4 + ld h, a ; 1ca7 + ld a, [$cebc] ; 1ca8 + sub h ; 1cab + ld h, a ; 1cac + ld a, d ; 1cad + ld [$ceba], a ; 1cae + add h ; 1cb1 + ld [$cebc], a ; 1cb2 + ld a, [$ceb9] ; 1cb5 + ld l, a ; 1cb8 + ld a, [$cebb] ; 1cb9 + sub l ; 1cbc + ld l, a ; 1cbd + ld a, e ; 1cbe + ld [$ceb9], a ; 1cbf + add l ; 1cc2 + ld [$cebb], a ; 1cc3 + ret ; 1cc6 +; 1cc7 + +Function1cc7:: + call Function1ce9 ; 1cc7 + call Function1cf6 ; 1cca + call Function1d69 ; 1ccd + call Function1d8d ; 1cd0 + call Function1a7a ; 1cd3 + call Function1e5f ; 1cd6 + ret ; 1cd9 +; 1cda + +Function1cda:: + call Function1ce9 ; 1cda + call Function1cf6 ; 1cdd + call Function1d69 ; 1ce0 + ld hl, $cedc ; 1ce3 + set 7, [hl] ; 1ce6 + ret ; 1ce8 +; 1ce9 + +Function1ce9:: + call Function1af9 ; 1ce9 + call Function1d27 ; 1cec + call Function1d10 ; 1cef + call Function1b4e ; 1cf2 + ret ; 1cf5 +; 1cf6 + +Function1cf6:: + xor a ; 1cf6 + ldh [$ffd6], a ; 1cf7 + call Function1d27 ; 1cf9 + call Function1d44 ; 1cfc + call Function2ef1 ; 1cff + ldh a, [$ffda] ; 1d02 + push af ; 1d04 + ld a, $1 ; 1d05 + ldh [$ffda], a ; 1d07 + call Function3472 ; 1d09 + pop af ; 1d0c + ldh [$ffda], a ; 1d0d + ret ; 1d0f +; 1d10 + +Function1d10:: + ld a, [$ceba] ; 1d10 + ld c, a ; 1d13 + ld a, [$cebc] ; 1d14 + sub c ; 1d17 + ld c, a ; 1d18 + ld a, [$cec9] ; 1d19 + add a ; 1d1c + inc a ; 1d1d + ld b, a ; 1d1e + ld a, [$ceb9] ; 1d1f + add b ; 1d22 + ld [$cebb], a ; 1d23 + ret ; 1d26 +; 1d27 + +Function1d27:: + ld hl, $ceca ; 1d27 + ld a, [hli] ; 1d2a + ld h, [hl] ; 1d2b + ld l, a ; 1d2c + ld a, [$cead] ; 1d2d + and a ; 1d30 + jr z, Function1d3d ; 1d31 + ld b, a ; 1d33 + ld c, $ff ; 1d34 + ld a, [hli] ; 1d36 + cp c ; 1d37 + jr nz, Function1d36 ; 1d38 + dec b ; 1d3a + jr nz, Function1d36 ; 1d3b + ld d, h ; 1d3d + ld e, l ; 1d3e + ld a, [hl] ; 1d3f + ld [$cec9], a ; 1d40 + ret ; 1d43 +; 1d44 + +Function1d44:: + call Function1b90 ; 1d44 + ld bc, $2a ; 1d47 + add hl, bc ; 1d4a + inc de ; 1d4b + ld a, [de] ; 1d4c + cp $ff ; 1d4d + ret z ; 1d4f + ld [$ceab], a ; 1d50 + push de ; 1d53 + push hl ; 1d54 + ld d, h ; 1d55 + ld e, l ; 1d56 + ld hl, $cecc ; 1d57 + call Function1d65 ; 1d5a + pop hl ; 1d5d + ld de, $28 ; 1d5e + add hl, de ; 1d61 + pop de ; 1d62 + jr Function1d4b ; 1d63 +; 1d65 + +Function1d65:: + ld a, [hli] ; 1d65 + ld h, [hl] ; 1d66 + ld l, a ; 1d67 + jp [hl] ; 1d68 + call Function1aad ; 1d69 + ld hl, $cedf ; 1d6c + ld a, [$cec8] ; 1d6f + bit 3, a ; 1d72 + jr z, Function1d78 ; 1d74 + set 3, [hl] ; 1d76 + ld a, [$cec8] ; 1d78 + bit 2, a ; 1d7b + jr z, Function1d83 ; 1d7d + set 5, [hl] ; 1d7f + set 4, [hl] ; 1d81 + ret ; 1d83 +; 1d84 + +Function1d84:: + call Function1a70 ; 1d84 + ld hl, $cedf ; 1d87 + and [hl] ; 1d8a + jr Function1d94 ; 1d8b +; 1d8d + +Function1d8d:: + xor a ; 1d8d + ld [$ceaa], a ; 1d8e + call Function1a66 ; 1d91 + bit 0, a ; 1d94 + jr nz, Function1dbc ; 1d96 + bit 1, a ; 1d98 + jr nz, Function1dd7 ; 1d9a + bit 3, a ; 1d9c + jr nz, Function1dd7 ; 1d9e + bit 4, a ; 1da0 + jr nz, Function1dae ; 1da2 + bit 5, a ; 1da4 + jr nz, Function1db5 ; 1da6 + xor a ; 1da8 + ld [$ceaa], a ; 1da9 + jr Function1dc1 ; 1dac +; 1dae + +Function1dae:: + ld a, $10 ; 1dae + ld [$ceaa], a ; 1db0 + jr Function1dc1 ; 1db3 +; 1db5 + +Function1db5:: + ld a, $20 ; 1db5 + ld [$ceaa], a ; 1db7 + jr Function1dc1 ; 1dba +; 1dbc + +Function1dbc:: + ld a, $1 ; 1dbc + ld [$ceaa], a ; 1dbe + call Function1d27 ; 1dc1 + ld a, [$cee0] ; 1dc4 + ld l, a ; 1dc7 + ld h, $0 ; 1dc8 + add hl, de ; 1dca + ld a, [hl] ; 1dcb + ld [$ceab], a ; 1dcc + ld a, [$cee0] ; 1dcf + ld [$cebf], a ; 1dd2 + and a ; 1dd5 + ret ; 1dd6 +; 1dd7 + +Function1dd7:: + ld a, $2 ; 1dd7 + ld [$ceaa], a ; 1dd9 + ld a, $ff ; 1ddc + ld [$ceab], a ; 1dde + scf ; 1de1 + ret ; 1de2 +; 1de3 + +Function1de3:: + push de ; 1de3 + ld hl, $cece ; 1de4 + ld a, [hli] ; 1de7 + ld h, [hl] ; 1de8 + ld l, a ; 1de9 + ld a, [$ceab] ; 1dea + call Function3654 ; 1ded + ld d, h ; 1df0 + ld e, l ; 1df1 + pop hl ; 1df2 + call Functionf74 ; 1df3 + ret ; 1df6 +; 1df7 + +Function1df7:: + push de ; 1df7 + ld a, [$ceab] ; 1df8 + call Function1e1b ; 1dfb + inc hl ; 1dfe + inc hl ; 1dff + ld a, [hli] ; 1e00 + ld d, [hl] ; 1e01 + ld e, a ; 1e02 + pop hl ; 1e03 + call Functionf74 ; 1e04 + ret ; 1e07 +; 1e08 + +Function1e08:: + call Function1e1b ; 1e08 + inc hl ; 1e0b + inc hl ; 1e0c + ld a, [hli] ; 1e0d + ld d, [hl] ; 1e0e + ld e, a ; 1e0f + ret ; 1e10 +; 1e11 + +Function1e11:: + ld a, [$ceab] ; 1e11 + call Function1e1b ; 1e14 + ld a, [hli] ; 1e17 + ld h, [hl] ; 1e18 + ld l, a ; 1e19 + jp [hl] ; 1e1a + ld e, a ; 1e1b + ld d, $0 ; 1e1c + ld hl, $cece ; 1e1e + ld a, [hli] ; 1e21 + ld h, [hl] ; 1e22 + ld l, a ; 1e23 + add hl, de ; 1e24 + add hl, de ; 1e25 + add hl, de ; 1e26 + add hl, de ; 1e27 + ret ; 1e28 +; 1e29 + +Function1e29:: + ld hl, $cea8 ; 1e29 + call Function1e57 ; 1e2c + ld hl, $ceb8 ; 1e2f + call Function1e57 ; 1e32 + ld hl, $cec8 ; 1e35 + call Function1e57 ; 1e38 + ld hl, $ced8 ; 1e3b + call Function1e57 ; 1e3e + xor a ; 1e41 + call OpenSRAM ; 1e42 + xor a ; 1e45 + ld hl, $bfff ; 1e46 + ld [hld], a ; 1e49 + ld [hld], a ; 1e4a + ld a, l ; 1e4b + ld [$cea8], a ; 1e4c + ld a, h ; 1e4f + ld [$cea9], a ; 1e50 + call CloseSRAM ; 1e53 + ret ; 1e56 +; 1e57 + +Function1e57:: + ld bc, $10 ; 1e57 + xor a ; 1e5a + call Function314c ; 1e5b + ret ; 1e5e +; 1e5f + +Function1e5f:: + push af ; 1e5f + and $3 ; 1e60 + jr z, Function1e6e ; 1e62 + ld hl, $ceb8 ; 1e64 + bit 3, a ; 1e67 + jr nz, Function1e6e ; 1e69 + call Function1e70 ; 1e6b + pop af ; 1e6e + ret ; 1e6f +; 1e70 + +Function1e70:: + push de ; 1e70 + ld de, $8 ; 1e71 + call Function3e24 ; 1e74 + pop de ; 1e77 + ret ; 1e78 +; 1e79 + +Function1e79:: + call Function1bc1 ; 1e79 + call Function9f7 ; 1e7c + call Function1aa4 ; 1e7f + ret ; 1e82 +; 1e83 + +Function1e83:: + ld [$d156], a ; 1e83 + ldh a, [hROMBank] ; 1e86 + push af ; 1e88 + ld a, [$d156] ; 1e89 + rst Bankswitch ; 1e8c + call Functionf74 ; 1e8d + pop af ; 1e90 + rst Bankswitch ; 1e91 + ret ; 1e92 +; 1e93 + +Function1e93:: + call Function1af9 ; 1e93 + ldh a, [hROMBank] ; 1e96 + ld [$cecb], a ; 1e98 + push af ; 1e9b + ld a, $9 ; 1e9c + rst Bankswitch ; 1e9e + call Function400e ; 1e9f + pop bc ; 1ea2 + ld a, b ; 1ea3 + rst Bankswitch ; 1ea4 + ld a, [$cebf] ; 1ea5 + ret ; 1ea8 +; 1ea9 + +Function1ea9:: + xor a ; 1ea9 + ldh [$ffd6], a ; 1eaa + ld a, $90 ; 1eac + ldh [$ff4a], a ; 1eae + ldh [$ffd4], a ; 1eb0 + ret ; 1eb2 +; 1eb3 + +Function1eb3:: + ldh a, [hROMBank] ; 1eb3 + push af ; 1eb5 + ld a, $21 ; 1eb6 + rst Bankswitch ; 1eb8 + call Function42db ; 1eb9 + pop af ; 1ebc + rst Bankswitch ; 1ebd + ret ; 1ebe +; 1ebf + +Function1ebf:: + ld a, [$c1d3] ; 1ebf + bit 0, a ; 1ec2 + ret z ; 1ec4 + ld a, [$c1d4] ; 1ec5 + and a ; 1ec8 + ret nz ; 1ec9 + ld hl, $c98a ; 1eca + inc [hl] ; 1ecd + ld a, [hl] ; 1ece + cp $6 ; 1ecf + ret c ; 1ed1 + xor a ; 1ed2 + ld [hl], a ; 1ed3 + ld a, $c ; 1ed4 + ld [$c1d4], a ; 1ed6 + ld a, $88 ; 1ed9 + ldh [$ff01], a ; 1edb + ld a, $1 ; 1edd + ldh [$ff02], a ; 1edf + ld a, $81 ; 1ee1 + ldh [$ff02], a ; 1ee3 + ret ; 1ee5 +; 1ee6 + +Function1ee6:: + xor a ; 1ee6 + ld [$d1ea], a ; 1ee7 + ld [$d1eb], a ; 1eea + ld [$d1ec], a ; 1eed + ld [$d1ed], a ; 1ef0 + ld [$d1ee], a ; 1ef3 + ld [$d1ef], a ; 1ef6 + ret ; 1ef9 +; 1efa + +Function1efa:: + nop ; 1efa + ld a, [$c1cc] ; 1efb + and a ; 1efe + ret nz ; 1eff + ld hl, $d8b8 ; 1f00 + bit 0, [hl] ; 1f03 + ret z ; 1f05 + ld hl, $d1ea ; 1f06 + bit 0, [hl] ; 1f09 + ret nz ; 1f0b + ld hl, $d1ef ; 1f0c + ld a, [hl] ; 1f0f + inc a ; 1f10 + cp $3c ; 1f11 + jr nc, Function1f17 ; 1f13 + ld [hl], a ; 1f15 + ret ; 1f16 +; 1f17 + +Function1f17:: + xor a ; 1f17 + ld [hl], a ; 1f18 + ld hl, $d1ee ; 1f19 + ld a, [hl] ; 1f1c + inc a ; 1f1d + cp $3c ; 1f1e + jr nc, Function1f24 ; 1f20 + ld [hl], a ; 1f22 + ret ; 1f23 +; 1f24 + +Function1f24:: + xor a ; 1f24 + ld [hl], a ; 1f25 + ld hl, $d1ed ; 1f26 + ld a, [hl] ; 1f29 + inc a ; 1f2a + cp $3c ; 1f2b + jr nc, Function1f31 ; 1f2d + ld [hl], a ; 1f2f + ret ; 1f30 +; 1f31 + +Function1f31:: + xor a ; 1f31 + ld [hl], a ; 1f32 + ld a, [$d1eb] ; 1f33 + ld h, a ; 1f36 + ld a, [$d1ec] ; 1f37 + ld l, a ; 1f3a + inc hl ; 1f3b + ld a, h ; 1f3c + cp $3 ; 1f3d + jr c, Function1f54 ; 1f3f + ld a, l ; 1f41 + cp $e8 ; 1f42 + jr c, Function1f54 ; 1f44 + ld hl, $d1ea ; 1f46 + set 0, [hl] ; 1f49 + ld a, $3b ; 1f4b + ld [$d1ed], a ; 1f4d + ld [$d1ee], a ; 1f50 + ret ; 1f53 +; 1f54 + +Function1f54:: + ld a, h ; 1f54 + ld [$d1eb], a ; 1f55 + ld a, l ; 1f58 + ld [$d1ec], a ; 1f59 + ret ; 1f5c +; 1f5d + +Function1f5d:: + ld hl, $c6e8 ; 1f5d + ld bc, $18 ; 1f60 + ld a, $0 ; 1f63 + call Function314c ; 1f65 + ret ; 1f68 +; 1f69 + +Function1f69:: + push hl ; 1f69 + ld hl, $d941 ; 1f6a + ld a, [hli] ; 1f6d + ld h, [hl] ; 1f6e + ld l, a ; 1f6f + or h ; 1f70 + ld a, [hl] ; 1f71 + jr nz, Function1f76 ; 1f72 + ld a, $ff ; 1f74 + pop hl ; 1f76 + ret ; 1f77 +; 1f78 + +Function1f78:: + ld a, [$da00] ; 1f78 + ld b, a ; 1f7b + ld a, [$da01] ; 1f7c + ld c, a ; 1f7f + xor a ; 1f80 + ld [$d941], a ; 1f81 + ld [$d942], a ; 1f84 + call Function1f95 ; 1f87 + ret c ; 1f8a + ld a, e ; 1f8b + ld [$d941], a ; 1f8c + ld a, d ; 1f8f + ld [$d942], a ; 1f90 + xor a ; 1f93 + ret ; 1f94 +; 1f95 + +Function1f95:: + push bc ; 1f95 + ldh a, [hROMBank] ; 1f96 + push af ; 1f98 + ld a, $25 ; 1f99 + rst Bankswitch ; 1f9b + ld hl, $4000 ; 1f9c + push hl ; 1f9f + ld a, [hli] ; 1fa0 + cp $ff ; 1fa1 + jr z, Function1fb5 ; 1fa3 + cp b ; 1fa5 + jr nz, Function1fae ; 1fa6 + ld a, [hli] ; 1fa8 + cp c ; 1fa9 + jr nz, Function1fae ; 1faa + jr Function1fb8 ; 1fac +; 1fae + +Function1fae:: + pop hl ; 1fae + ld de, $4 ; 1faf + add hl, de ; 1fb2 + jr Function1f9f ; 1fb3 +; 1fb5 + +Function1fb5:: + scf ; 1fb5 + jr Function1fbb ; 1fb6 +; 1fb8 + +Function1fb8:: + ld e, [hl] ; 1fb8 + inc hl ; 1fb9 + ld d, [hl] ; 1fba + pop hl ; 1fbb + pop bc ; 1fbc + ld a, b ; 1fbd + rst Bankswitch ; 1fbe + pop bc ; 1fbf + ret ; 1fc0 +; 1fc1 + +Function1fc1:: + call Function1fc8 ; 1fc1 + call Functiond58 ; 1fc4 + ret ; 1fc7 +; 1fc8 + +Function1fc8:: + ldh a, [hROMBank] ; 1fc8 + push af ; 1fca + ld a, [$d0c5] ; 1fcb + rst Bankswitch ; 1fce + call Function1fe6 ; 1fcf + ld a, $60 ; 1fd2 + ld hl, $c3a0 ; 1fd4 + ld bc, $168 ; 1fd7 + call Function314c ; 1fda + ld a, $5 ; 1fdd + rst Bankswitch ; 1fdf + call Function538d ; 1fe0 + pop af ; 1fe3 + rst Bankswitch ; 1fe4 + ret ; 1fe5 +; 1fe6 + +Function1fe6:: + ld a, [$d07d] ; 1fe6 + ld e, a ; 1fe9 + ld a, [$d07e] ; 1fea + ld d, a ; 1fed + ld hl, $c508 ; 1fee + ld b, $5 ; 1ff1 + push de ; 1ff3 + push hl ; 1ff4 + ld c, $6 ; 1ff5 + push de ; 1ff7 + push hl ; 1ff8 + ld a, [de] ; 1ff9 + and a ; 1ffa + jr nz, Function2000 ; 1ffb + ld a, [$d086] ; 1ffd + ld e, l ; 2000 + ld d, h ; 2001 + add a ; 2002 + ld l, a ; 2003 + ld h, $0 ; 2004 + add hl, hl ; 2006 + add hl, hl ; 2007 + add hl, hl ; 2008 + ld a, [$d0c6] ; 2009 + add l ; 200c + ld l, a ; 200d + ld a, [$d0c7] ; 200e + adc h ; 2011 + ld h, a ; 2012 + ld a, [hli] ; 2013 + ld [de], a ; 2014 + inc de ; 2015 + ld a, [hli] ; 2016 + ld [de], a ; 2017 + inc de ; 2018 + ld a, [hli] ; 2019 + ld [de], a ; 201a + inc de ; 201b + ld a, [hli] ; 201c + ld [de], a ; 201d + inc de ; 201e + ld a, e ; 201f + add a, $14 ; 2020 + ld e, a ; 2022 + jr nc, Function2026 ; 2023 + inc d ; 2025 + ld a, [hli] ; 2026 + ld [de], a ; 2027 + inc de ; 2028 + ld a, [hli] ; 2029 + ld [de], a ; 202a + inc de ; 202b + ld a, [hli] ; 202c + ld [de], a ; 202d + inc de ; 202e + ld a, [hli] ; 202f + ld [de], a ; 2030 + inc de ; 2031 + ld a, e ; 2032 + add a, $14 ; 2033 + ld e, a ; 2035 + jr nc, Function2039 ; 2036 + inc d ; 2038 + ld a, [hli] ; 2039 + ld [de], a ; 203a + inc de ; 203b + ld a, [hli] ; 203c + ld [de], a ; 203d + inc de ; 203e + ld a, [hli] ; 203f + ld [de], a ; 2040 + inc de ; 2041 + ld a, [hli] ; 2042 + ld [de], a ; 2043 + inc de ; 2044 + ld a, e ; 2045 + add a, $14 ; 2046 + ld e, a ; 2048 + jr nc, Function204c ; 2049 + inc d ; 204b + ld a, [hli] ; 204c + ld [de], a ; 204d + inc de ; 204e + ld a, [hli] ; 204f + ld [de], a ; 2050 + inc de ; 2051 + ld a, [hli] ; 2052 + ld [de], a ; 2053 + inc de ; 2054 + ld a, [hli] ; 2055 + ld [de], a ; 2056 + inc de ; 2057 + pop hl ; 2058 + ld de, $4 ; 2059 + add hl, de ; 205c + pop de ; 205d + inc de ; 205e + dec c ; 205f + jp nz, Function1ff7 ; 2060 + pop hl ; 2063 + ld de, $60 ; 2064 + add hl, de ; 2067 + pop de ; 2068 + ld a, [$d088] ; 2069 + add a, $6 ; 206c + add e ; 206e + ld e, a ; 206f + jr nc, Function2073 ; 2070 + inc d ; 2072 + dec b ; 2073 + jp nz, Function1ff3 ; 2074 + ret ; 2077 +; 2078 + +Function2078:: + ld a, $fa ; 2078 + ldh [$ffa1], a ; 207a + ld a, $5 ; 207c + ld hl, $5484 ; 207e + rst FarCall ; 2081 + xor a ; 2082 + ldh [$ffa1], a ; 2083 + ret ; 2085 +; 2086 + +Function2086:: + call Function1f5d ; 2086 + call Function2f10 ; 2089 + call Function2f1d ; 208c + call Function1f78 ; 208f + call Function2f16 ; 2092 + ld a, $5 ; 2095 + call Function2764 ; 2097 + ld a, $25 ; 209a + ld hl, $7c2a ; 209c + rst FarCall ; 209f + ld a, $3 ; 20a0 + call Function2764 ; 20a2 + call Function2dd2 ; 20a5 + ld [$c1cf], a ; 20a8 + ret ; 20ab +; 20ac + +Function20ac:: + ld a, $1 ; 20ac + ld [$c1cd], a ; 20ae + ld a, $23 ; 20b1 + ld hl, $43e9 ; 20b3 + rst FarCall ; 20b6 + ld a, $23 ; 20b7 + ld hl, $4356 ; 20b9 + rst FarCall ; 20bc + call Function1fc1 ; 20bd + call Function20c7 ; 20c0 + call Function20e6 ; 20c3 + ret ; 20c6 +; 20c7 + +Function20c7:: + ld a, $98 ; 20c7 + ld [$d05c], a ; 20c9 + xor a ; 20cc + ld [$d05b], a ; 20cd + ldh [$ffd2], a ; 20d0 + ldh [$ffd1], a ; 20d2 + ld a, $1 ; 20d4 + ld hl, $58c5 ; 20d6 + rst FarCall ; 20d9 + ld a, $60 ; 20da + ld bc, $400 ; 20dc + ld hl, $9800 ; 20df + call Function314c ; 20e2 + ret ; 20e5 +; 20e6 + +Function20e6:: + ld de, $c3a0 ; 20e6 + call Function20f7 ; 20e9 + ldh a, [$ffe8] ; 20ec + and a ; 20ee + ret z ; 20ef + ld de, $ccd9 ; 20f0 + ld a, $1 ; 20f3 + ldh [$ff4f], a ; 20f5 + ld hl, $9800 ; 20f7 + ld c, $14 ; 20fa + ld b, $12 ; 20fc + push bc ; 20fe + ld a, [de] ; 20ff + inc de ; 2100 + ld [hli], a ; 2101 + dec c ; 2102 + jr nz, Function20ff ; 2103 + ld bc, $c ; 2105 + add hl, bc ; 2108 + pop bc ; 2109 + dec b ; 210a + jr nz, Function20fe ; 210b + ld a, $0 ; 210d + ldh [$ff4f], a ; 210f + ret ; 2111 +; 2112 + +Function2112:: + call Function2dfa ; 2112 + call Function2944 ; 2115 + xor a ; 2118 + ldh [$ffe0], a ; 2119 + xor a ; 211b + ldh [$ffe1], a ; 211c + ld a, $5 ; 211e + ld hl, $416d ; 2120 + rst FarCall ; 2123 + call Functiondac ; 2124 + ret ; 2127 +; 2128 + +Function2128:: + ld b, $9 ; 2128 + jp Function3583 ; 212a +; 212d + +Function212d:: + call Function30ff ; 212d + call Function1ea9 ; 2130 + call Function2a05 ; 2133 + ld a, $1 ; 2136 + ld hl, $5730 ; 2138 + rst FarCall ; 213b + ld a, $5 ; 213c + ld hl, $5612 ; 213e + rst FarCall ; 2141 + ld hl, $d182 ; 2142 + bit 6, [hl] ; 2145 + jr nz, Function2151 ; 2147 + ld hl, $cfe5 ; 2149 + set 0, [hl] ; 214c + call Function2ef1 ; 214e + xor a ; 2151 + ld [$d182], a ; 2152 + ret ; 2155 +; 2156 + +Function2156:: + ld a, [$ce86] ; 2156 + cp $ff ; 2159 + ret z ; 215b + and a ; 215c + jr z, Function216d ; 215d + cp $1 ; 215f + jr z, Function217c ; 2161 + cp $2 ; 2163 + jr z, Function2187 ; 2165 + cp $3 ; 2167 + jr z, Function2192 ; 2169 + and a ; 216b + ret ; 216c +; 216d + +Function216d:: + ld a, [$d20e] ; 216d + sub a, $4 ; 2170 + ld b, a ; 2172 + ld a, [$d087] ; 2173 + add a ; 2176 + cp b ; 2177 + jr z, Function21a1 ; 2178 + and a ; 217a + ret ; 217b +; 217c + +Function217c:: + ld a, [$d20e] ; 217c + sub a, $4 ; 217f + cp $ff ; 2181 + jr z, Function21a1 ; 2183 + and a ; 2185 + ret ; 2186 +; 2187 + +Function2187:: + ld a, [$d20d] ; 2187 + sub a, $4 ; 218a + cp $ff ; 218c + jr z, Function21a1 ; 218e + and a ; 2190 + ret ; 2191 +; 2192 + +Function2192:: + ld a, [$d20d] ; 2192 + sub a, $4 ; 2195 + ld b, a ; 2197 + ld a, [$d088] ; 2198 + add a ; 219b + cp b ; 219c + jr z, Function21a1 ; 219d + and a ; 219f + ret ; 21a0 +; 21a1 + +Function21a1:: + scf ; 21a1 + ret ; 21a2 +; 21a3 + +Function21a3:: + ld a, [$ce86] ; 21a3 + and a ; 21a6 + jp z, Function2263 ; 21a7 + cp $1 ; 21aa + jp z, Function2232 ; 21ac + cp $2 ; 21af + jp z, Function21ba ; 21b1 + cp $3 ; 21b4 + jp z, Function21f6 ; 21b6 + ret ; 21b9 +; 21ba + +Function21ba:: + ld a, [$d0aa] ; 21ba + ld [$da00], a ; 21bd + ld a, [$d0ab] ; 21c0 + ld [$da01], a ; 21c3 + ld a, [$d0b3] ; 21c6 + ld [$da03], a ; 21c9 + ld a, [$d0b2] ; 21cc + ld hl, $da02 ; 21cf + add [hl] ; 21d2 + ld [hl], a ; 21d3 + ld c, a ; 21d4 + ld hl, $d0b4 ; 21d5 + ld a, [hli] ; 21d8 + ld h, [hl] ; 21d9 + ld l, a ; 21da + srl c ; 21db + jr z, Function21eb ; 21dd + ld a, [$d0b1] ; 21df + add a, $6 ; 21e2 + ld e, a ; 21e4 + ld d, $0 ; 21e5 + add hl, de ; 21e7 + dec c ; 21e8 + jr nz, Function21e7 ; 21e9 + ld a, l ; 21eb + ld [$d07d], a ; 21ec + ld a, h ; 21ef + ld [$d07e], a ; 21f0 + jp Function2291 ; 21f3 +; 21f6 + +Function21f6:: + ld a, [$d0b6] ; 21f6 + ld [$da00], a ; 21f9 + ld a, [$d0b7] ; 21fc + ld [$da01], a ; 21ff + ld a, [$d0bf] ; 2202 + ld [$da03], a ; 2205 + ld a, [$d0be] ; 2208 + ld hl, $da02 ; 220b + add [hl] ; 220e + ld [hl], a ; 220f + ld c, a ; 2210 + ld hl, $d0c0 ; 2211 + ld a, [hli] ; 2214 + ld h, [hl] ; 2215 + ld l, a ; 2216 + srl c ; 2217 + jr z, Function2227 ; 2219 + ld a, [$d0bd] ; 221b + add a, $6 ; 221e + ld e, a ; 2220 + ld d, $0 ; 2221 + add hl, de ; 2223 + dec c ; 2224 + jr nz, Function2223 ; 2225 + ld a, l ; 2227 + ld [$d07d], a ; 2228 + ld a, h ; 222b + ld [$d07e], a ; 222c + jp Function2291 ; 222f +; 2232 + +Function2232:: + ld a, [$d092] ; 2232 + ld [$da00], a ; 2235 + ld a, [$d093] ; 2238 + ld [$da01], a ; 223b + ld a, [$d09a] ; 223e + ld [$da02], a ; 2241 + ld a, [$d09b] ; 2244 + ld hl, $da03 ; 2247 + add [hl] ; 224a + ld [hl], a ; 224b + ld c, a ; 224c + ld hl, $d09c ; 224d + ld a, [hli] ; 2250 + ld h, [hl] ; 2251 + ld l, a ; 2252 + ld b, $0 ; 2253 + srl c ; 2255 + add hl, bc ; 2257 + ld a, l ; 2258 + ld [$d07d], a ; 2259 + ld a, h ; 225c + ld [$d07e], a ; 225d + jp Function2291 ; 2260 +; 2263 + +Function2263:: + ld a, [$d09e] ; 2263 + ld [$da00], a ; 2266 + ld a, [$d09f] ; 2269 + ld [$da01], a ; 226c + ld a, [$d0a6] ; 226f + ld [$da02], a ; 2272 + ld a, [$d0a7] ; 2275 + ld hl, $da03 ; 2278 + add [hl] ; 227b + ld [hl], a ; 227c + ld c, a ; 227d + ld hl, $d0a8 ; 227e + ld a, [hli] ; 2281 + ld h, [hl] ; 2282 + ld l, a ; 2283 + ld b, $0 ; 2284 + srl c ; 2286 + add hl, bc ; 2288 + ld a, l ; 2289 + ld [$d07d], a ; 228a + ld a, h ; 228d + ld [$d07e], a ; 228e + scf ; 2291 + ret ; 2292 +; 2293 + +Function2293:: + call Function22ad ; 2293 + ret nc ; 2296 + push bc ; 2297 + ld a, $5 ; 2298 + ld hl, $4a2d ; 229a + rst FarCall ; 229d + pop bc ; 229e + ret nc ; 229f + call Function2302 ; 22a0 + scf ; 22a3 + ret ; 22a4 +; 22a5 + +Function22a5:: + call Function22ad ; 22a5 + ret nc ; 22a8 + call Function2302 ; 22a9 + ret ; 22ac +; 22ad + +Function22ad:: + ld a, $5 ; 22ad + ld hl, $4a18 ; 22af + rst FarCall ; 22b2 + ret nc ; 22b3 + ldh a, [hROMBank] ; 22b4 + push af ; 22b6 + call Function2d2b ; 22b7 + call Function22c1 ; 22ba + pop de ; 22bd + ld a, d ; 22be + rst Bankswitch ; 22bf + ret ; 22c0 +; 22c1 + +Function22c1:: + ld a, [$d20e] ; 22c1 + sub a, $4 ; 22c4 + ld e, a ; 22c6 + ld a, [$d20d] ; 22c7 + sub a, $4 ; 22ca + ld d, a ; 22cc + ld a, [$d945] ; 22cd + and a ; 22d0 + ret z ; 22d1 + ld c, a ; 22d2 + ld hl, $d946 ; 22d3 + ld a, [hli] ; 22d6 + ld h, [hl] ; 22d7 + ld l, a ; 22d8 + push hl ; 22d9 + ld a, [hli] ; 22da + cp e ; 22db + jr nz, Function22e4 ; 22dc + ld a, [hli] ; 22de + cp d ; 22df + jr nz, Function22e4 ; 22e0 + jr Function22f1 ; 22e2 +; 22e4 + +Function22e4:: + pop hl ; 22e4 + ld a, $5 ; 22e5 + add l ; 22e7 + ld l, a ; 22e8 + jr nc, Function22ec ; 22e9 + inc h ; 22eb + dec c ; 22ec + jr nz, Function22d9 ; 22ed + xor a ; 22ef + ret ; 22f0 +; 22f1 + +Function22f1:: + pop hl ; 22f1 + call Function22fe ; 22f2 + ret nc ; 22f5 + ld a, [$d945] ; 22f6 + inc a ; 22f9 + sub c ; 22fa + ld c, a ; 22fb + scf ; 22fc + ret ; 22fd +; 22fe + +Function22fe:: + inc hl ; 22fe + inc hl ; 22ff + scf ; 2300 + ret ; 2301 +; 2302 + +Function2302:: + ldh a, [hROMBank] ; 2302 + push af ; 2304 + call Function2d2b ; 2305 + call Function230f ; 2308 + pop af ; 230b + rst Bankswitch ; 230c + scf ; 230d + ret ; 230e +; 230f + +Function230f:: + push bc ; 230f + ld hl, $d946 ; 2310 + ld a, [hli] ; 2313 + ld h, [hl] ; 2314 + ld l, a ; 2315 + ld a, c ; 2316 + dec a ; 2317 + ld bc, $5 ; 2318 + call Function31a3 ; 231b + ld bc, $2 ; 231e + add hl, bc ; 2321 + ld a, [hli] ; 2322 + cp $ff ; 2323 + jr nz, Function232b ; 2325 + ld hl, $d9f5 ; 2327 + ld a, [hli] ; 232a + pop bc ; 232b + ld [$d043], a ; 232c + ld a, [hli] ; 232f + ld [$d044], a ; 2330 + ld a, [hli] ; 2333 + ld [$d045], a ; 2334 + ld a, c ; 2337 + ld [$d046], a ; 2338 + ld a, [$da00] ; 233b + ld [$d047], a ; 233e + ld a, [$da01] ; 2341 + ld [$d048], a ; 2344 + scf ; 2347 + ret ; 2348 +; 2349 + +Function2349:: + call Function2362 ; 2349 + call Function239b ; 234c + ld a, [$d043] ; 234f + ld [$d9ff], a ; 2352 + ld a, [$d044] ; 2355 + ld [$da00], a ; 2358 + ld a, [$d045] ; 235b + ld [$da01], a ; 235e + ret ; 2361 +; 2362 + +Function2362:: + call Function2d63 ; 2362 + call Function23cd ; 2365 + ret nz ; 2368 + ld a, [$d044] ; 2369 + ld b, a ; 236c + ld a, [$d045] ; 236d + ld c, a ; 2370 + call Function2d72 ; 2371 + call Function23d3 ; 2374 + ret nz ; 2377 + ld a, [$d047] ; 2378 + cp $f ; 237b + jr nz, Function2388 ; 237d + ld a, [$d048] ; 237f + cp $a ; 2382 + ret z ; 2384 + cp $c ; 2385 + ret z ; 2387 + ld a, [$d046] ; 2388 + ld [$d9f2], a ; 238b + ld a, [$d047] ; 238e + ld [$d9f3], a ; 2391 + ld a, [$d048] ; 2394 + ld [$d9f4], a ; 2397 + ret ; 239a +; 239b + +Function239b:: + call Function2d63 ; 239b + call Function23cd ; 239e + ret nz ; 23a1 + ld a, [$d044] ; 23a2 + ld b, a ; 23a5 + ld a, [$d045] ; 23a6 + ld c, a ; 23a9 + call Function2d72 ; 23aa + call Function23d3 ; 23ad + ret nz ; 23b0 + ld a, [$d044] ; 23b1 + ld b, a ; 23b4 + ld a, [$d045] ; 23b5 + ld c, a ; 23b8 + call Function2d80 ; 23b9 + ld a, c ; 23bc + cp $6 ; 23bd + ret nz ; 23bf + ld a, [$d047] ; 23c0 + ld [$d9fb], a ; 23c3 + ld a, [$d048] ; 23c6 + ld [$d9fc], a ; 23c9 + ret ; 23cc +; 23cd + +Function23cd:: + cp $2 ; 23cd + ret z ; 23cf + cp $1 ; 23d0 + ret ; 23d2 +; 23d3 + +Function23d3:: + cp $3 ; 23d3 + ret z ; 23d5 + cp $4 ; 23d6 + ret z ; 23d8 + cp $7 ; 23d9 + ret z ; 23db + cp $6 ; 23dc + ret ; 23de +; 23df + +Function23df:: + cp $3 ; 23df + ret z ; 23e1 + cp $6 ; 23e2 + ret z ; 23e4 + cp $5 ; 23e5 + ret ; 23e7 +; 23e8 + +Function23e8:: + call Function2405 ; 23e8 + call Function2d2b ; 23eb + call Function242e ; 23ee + xor a ; 23f1 + call Function2415 ; 23f2 + ret ; 23f5 +; 23f6 + +Function23f6:: + call Function2405 ; 23f6 + call Function2d2b ; 23f9 + call Function242e ; 23fc + ld a, $1 ; 23ff + call Function2415 ; 2401 + ret ; 2404 +; 2405 + +Function2405:: + call Function2d16 ; 2405 + call Function2cf5 ; 2408 + call Function2d56 ; 240b + call Function243b ; 240e + call Function2447 ; 2411 + ret ; 2414 +; 2415 + +Function2415:: + push af ; 2415 + ld hl, $d08f ; 2416 + ld a, [hli] ; 2419 + ld h, [hl] ; 241a + ld l, a ; 241b + inc hl ; 241c + inc hl ; 241d + call Function24b9 ; 241e + call Function24d0 ; 2421 + call Function24e7 ; 2424 + pop af ; 2427 + and a ; 2428 + ret nz ; 2429 + call Function24fe ; 242a + ret ; 242d +; 242e + +Function242e:: + ld hl, $d08d ; 242e + ld a, [hli] ; 2431 + ld h, [hl] ; 2432 + ld l, a ; 2433 + call Function248b ; 2434 + call Function24a2 ; 2437 + ret ; 243a +; 243b + +Function243b:: + ld de, $d086 ; 243b + ld c, $c ; 243e + ld a, [hli] ; 2440 + ld [de], a ; 2441 + inc de ; 2442 + dec c ; 2443 + jr nz, Function2440 ; 2444 + ret ; 2446 +; 2447 + +Function2447:: + ld a, $ff ; 2447 + ld [$d092], a ; 2449 + ld [$d09e], a ; 244c + ld [$d0aa], a ; 244f + ld [$d0b6], a ; 2452 + ld a, [$d091] ; 2455 + ld b, a ; 2458 + bit 3, b ; 2459 + jr z, Function2463 ; 245b + ld de, $d092 ; 245d + call Function2482 ; 2460 + bit 2, b ; 2463 + jr z, Function246d ; 2465 + ld de, $d09e ; 2467 + call Function2482 ; 246a + bit 1, b ; 246d + jr z, Function2477 ; 246f + ld de, $d0aa ; 2471 + call Function2482 ; 2474 + bit 0, b ; 2477 + jr z, Function2481 ; 2479 + ld de, $d0b6 ; 247b + call Function2482 ; 247e + ret ; 2481 +; 2482 + +Function2482:: + ld c, $c ; 2482 + ld a, [hli] ; 2484 + ld [de], a ; 2485 + inc de ; 2486 + dec c ; 2487 + jr nz, Function2484 ; 2488 + ret ; 248a +; 248b + +Function248b:: + ld a, [hli] ; 248b + ld c, a ; 248c + ld [$d951], a ; 248d + ld a, l ; 2490 + ld [$d952], a ; 2491 + ld a, h ; 2494 + ld [$d953], a ; 2495 + ld a, c ; 2498 + and a ; 2499 + ret z ; 249a + ld bc, $4 ; 249b + call Function31a3 ; 249e + ret ; 24a1 +; 24a2 + +Function24a2:: + ld a, [hli] ; 24a2 + ld c, a ; 24a3 + ld [$d954], a ; 24a4 + ld a, l ; 24a7 + ld [$d955], a ; 24a8 + ld a, h ; 24ab + ld [$d956], a ; 24ac + ld a, c ; 24af + and a ; 24b0 + ret z ; 24b1 + ld bc, $3 ; 24b2 + call Function31a3 ; 24b5 + ret ; 24b8 +; 24b9 + +Function24b9:: + ld a, [hli] ; 24b9 + ld c, a ; 24ba + ld [$d945], a ; 24bb + ld a, l ; 24be + ld [$d946], a ; 24bf + ld a, h ; 24c2 + ld [$d947], a ; 24c3 + ld a, c ; 24c6 + and a ; 24c7 + ret z ; 24c8 + ld bc, $5 ; 24c9 + call Function31a3 ; 24cc + ret ; 24cf +; 24d0 + +Function24d0:: + ld a, [hli] ; 24d0 + ld c, a ; 24d1 + ld [$d948], a ; 24d2 + ld a, l ; 24d5 + ld [$d949], a ; 24d6 + ld a, h ; 24d9 + ld [$d94a], a ; 24da + ld a, c ; 24dd + and a ; 24de + ret z ; 24df + ld bc, $8 ; 24e0 + call Function31a3 ; 24e3 + ret ; 24e6 +; 24e7 + +Function24e7:: + ld a, [hli] ; 24e7 + ld c, a ; 24e8 + ld [$d94b], a ; 24e9 + ld a, l ; 24ec + ld [$d94c], a ; 24ed + ld a, h ; 24f0 + ld [$d94d], a ; 24f1 + ld a, c ; 24f4 + and a ; 24f5 + ret z ; 24f6 + ld bc, $5 ; 24f7 + call Function31a3 ; 24fa + ret ; 24fd +; 24fe + +Function24fe:: + push hl ; 24fe + call Function2550 ; 24ff + pop de ; 2502 + ld hl, $d465 ; 2503 + ld a, [de] ; 2506 + inc de ; 2507 + ld [$d94e], a ; 2508 + ld a, e ; 250b + ld [$d94f], a ; 250c + ld a, d ; 250f + ld [$d950], a ; 2510 + ld a, [$d94e] ; 2513 + call Function2536 ; 2516 + ld a, [$d94e] ; 2519 + ld c, a ; 251c + ld a, $10 ; 251d + sub c ; 251f + jr z, Function2533 ; 2520 + ld bc, $1 ; 2522 + add hl, bc ; 2525 + ld bc, $10 ; 2526 + ld [hl], $0 ; 2529 + inc hl ; 252b + ld [hl], $ff ; 252c + dec hl ; 252e + add hl, bc ; 252f + dec a ; 2530 + jr nz, Function2529 ; 2531 + ld h, d ; 2533 + ld l, e ; 2534 + ret ; 2535 +; 2536 + +Function2536:: + and a ; 2536 + ret z ; 2537 + ld c, a ; 2538 + push bc ; 2539 + push hl ; 253a + ld a, $ff ; 253b + ld [hli], a ; 253d + ld b, $d ; 253e + ld a, [de] ; 2540 + inc de ; 2541 + ld [hli], a ; 2542 + dec b ; 2543 + jr nz, Function2540 ; 2544 + pop hl ; 2546 + ld bc, $10 ; 2547 + add hl, bc ; 254a + pop bc ; 254b + dec c ; 254c + jr nz, Function2539 ; 254d + ret ; 254f +; 2550 + +Function2550:: + ld hl, $d225 ; 2550 + ld bc, $1e0 ; 2553 + xor a ; 2556 + call Function314c ; 2557 + ld hl, $d225 ; 255a + ld de, $28 ; 255d + ld c, $c ; 2560 + xor a ; 2562 + ld [hl], a ; 2563 + add hl, de ; 2564 + dec c ; 2565 + jr nz, Function2563 ; 2566 + ret ; 2568 +; 2569 + +Function2569:: + call Function2d30 ; 2569 + rst Bankswitch ; 256c + ld hl, $d08f ; 256d + ld a, [hli] ; 2570 + ld h, [hl] ; 2571 + ld l, a ; 2572 + inc hl ; 2573 + inc hl ; 2574 + inc hl ; 2575 + ld a, [$d9ff] ; 2576 + dec a ; 2579 + ld c, a ; 257a + ld b, $0 ; 257b + ld a, $5 ; 257d + call Function31a3 ; 257f + ld a, [hli] ; 2582 + ld [$da02], a ; 2583 + ld a, [hli] ; 2586 + ld [$da03], a ; 2587 + ld a, [hli] ; 258a + cp $ff ; 258b + jr nz, Function2592 ; 258d + call Function2596 ; 258f + call Function25a9 ; 2592 + ret ; 2595 +; 2596 + +Function2596:: + ld a, [$d046] ; 2596 + ld [$d9f5], a ; 2599 + ld a, [$d047] ; 259c + ld [$d9f6], a ; 259f + ld a, [$d048] ; 25a2 + ld [$d9f7], a ; 25a5 + ret ; 25a8 +; 25a9 + +Function25a9:: + ld hl, $c700 ; 25a9 + ld a, [$da03] ; 25ac + bit 0, a ; 25af + jr nz, Function25b9 ; 25b1 + srl a ; 25b3 + add a, $1 ; 25b5 + jr Function25bd ; 25b7 +; 25b9 + +Function25b9:: + add a, $1 ; 25b9 + srl a ; 25bb + ld c, a ; 25bd + ld b, $0 ; 25be + add hl, bc ; 25c0 + ld a, [$d088] ; 25c1 + add a, $6 ; 25c4 + ld c, a ; 25c6 + ld b, $0 ; 25c7 + ld a, [$da02] ; 25c9 + bit 0, a ; 25cc + jr nz, Function25d6 ; 25ce + srl a ; 25d0 + add a, $1 ; 25d2 + jr Function25da ; 25d4 +; 25d6 + +Function25d6:: + add a, $1 ; 25d6 + srl a ; 25d8 + call Function31a3 ; 25da + ld a, l ; 25dd + ld [$d07d], a ; 25de + ld a, h ; 25e1 + ld [$d07e], a ; 25e2 + ld a, [$da02] ; 25e5 + and $1 ; 25e8 + ld [$d07f], a ; 25ea + ld a, [$da03] ; 25ed + and $1 ; 25f0 + ld [$d080], a ; 25f2 + ret ; 25f5 +; 25f6 + +Function25f6:: + ld hl, $c700 ; 25f6 + ld bc, $514 ; 25f9 + ld a, $0 ; 25fc + call Function314c ; 25fe + call Function260d ; 2601 + call Function264d ; 2604 + ld a, $1 ; 2607 + call Function2764 ; 2609 + ret ; 260c +; 260d + +Function260d:: + ldh a, [hROMBank] ; 260d + push af ; 260f + ld hl, $c700 ; 2610 + ld a, [$d088] ; 2613 + ldh [$ffb2], a ; 2616 + add a, $6 ; 2618 + ldh [$ffb1], a ; 261a + ld c, a ; 261c + ld b, $0 ; 261d + add hl, bc ; 261f + add hl, bc ; 2620 + add hl, bc ; 2621 + ld c, $3 ; 2622 + add hl, bc ; 2624 + ld a, [$d089] ; 2625 + rst Bankswitch ; 2628 + ld a, [$d08a] ; 2629 + ld e, a ; 262c + ld a, [$d08b] ; 262d + ld d, a ; 2630 + ld a, [$d087] ; 2631 + ld b, a ; 2634 + push hl ; 2635 + ldh a, [$ffb2] ; 2636 + ld c, a ; 2638 + ld a, [de] ; 2639 + inc de ; 263a + ld [hli], a ; 263b + dec c ; 263c + jr nz, Function2639 ; 263d + pop hl ; 263f + ldh a, [$ffb1] ; 2640 + add l ; 2642 + ld l, a ; 2643 + jr nc, Function2647 ; 2644 + inc h ; 2646 + dec b ; 2647 + jr nz, Function2635 ; 2648 + pop af ; 264a + rst Bankswitch ; 264b + ret ; 264c +; 264d + +Function264d:: + ld a, [$d092] ; 264d + cp $ff ; 2650 + jr z, Function2679 ; 2652 + ld b, a ; 2654 + ld a, [$d093] ; 2655 + ld c, a ; 2658 + call Function2d34 ; 2659 + ld a, [$d094] ; 265c + ld l, a ; 265f + ld a, [$d095] ; 2660 + ld h, a ; 2663 + ld a, [$d096] ; 2664 + ld e, a ; 2667 + ld a, [$d097] ; 2668 + ld d, a ; 266b + ld a, [$d098] ; 266c + ldh [$ffb1], a ; 266f + ld a, [$d099] ; 2671 + ldh [$ffb2], a ; 2674 + call Function26fc ; 2676 + ld a, [$d09e] ; 2679 + cp $ff ; 267c + jr z, Function26a5 ; 267e + ld b, a ; 2680 + ld a, [$d09f] ; 2681 + ld c, a ; 2684 + call Function2d34 ; 2685 + ld a, [$d0a0] ; 2688 + ld l, a ; 268b + ld a, [$d0a1] ; 268c + ld h, a ; 268f + ld a, [$d0a2] ; 2690 + ld e, a ; 2693 + ld a, [$d0a3] ; 2694 + ld d, a ; 2697 + ld a, [$d0a4] ; 2698 + ldh [$ffb1], a ; 269b + ld a, [$d0a5] ; 269d + ldh [$ffb2], a ; 26a0 + call Function26fc ; 26a2 + ld a, [$d0aa] ; 26a5 + cp $ff ; 26a8 + jr z, Function26d0 ; 26aa + ld b, a ; 26ac + ld a, [$d0ab] ; 26ad + ld c, a ; 26b0 + call Function2d34 ; 26b1 + ld a, [$d0ac] ; 26b4 + ld l, a ; 26b7 + ld a, [$d0ad] ; 26b8 + ld h, a ; 26bb + ld a, [$d0ae] ; 26bc + ld e, a ; 26bf + ld a, [$d0af] ; 26c0 + ld d, a ; 26c3 + ld a, [$d0b0] ; 26c4 + ld b, a ; 26c7 + ld a, [$d0b1] ; 26c8 + ldh [$ffb1], a ; 26cb + call Function271f ; 26cd + ld a, [$d0b6] ; 26d0 + cp $ff ; 26d3 + jr z, Function26fb ; 26d5 + ld b, a ; 26d7 + ld a, [$d0b7] ; 26d8 + ld c, a ; 26db + call Function2d34 ; 26dc + ld a, [$d0b8] ; 26df + ld l, a ; 26e2 + ld a, [$d0b9] ; 26e3 + ld h, a ; 26e6 + ld a, [$d0ba] ; 26e7 + ld e, a ; 26ea + ld a, [$d0bb] ; 26eb + ld d, a ; 26ee + ld a, [$d0bc] ; 26ef + ld b, a ; 26f2 + ld a, [$d0bd] ; 26f3 + ldh [$ffb1], a ; 26f6 + call Function271f ; 26f8 + ret ; 26fb +; 26fc + +Function26fc:: + ld c, $3 ; 26fc + push de ; 26fe + push hl ; 26ff + ldh a, [$ffb1] ; 2700 + ld b, a ; 2702 + ld a, [hli] ; 2703 + ld [de], a ; 2704 + inc de ; 2705 + dec b ; 2706 + jr nz, Function2703 ; 2707 + pop hl ; 2709 + ldh a, [$ffb2] ; 270a + ld e, a ; 270c + ld d, $0 ; 270d + add hl, de ; 270f + pop de ; 2710 + ld a, [$d088] ; 2711 + add a, $6 ; 2714 + add e ; 2716 + ld e, a ; 2717 + jr nc, Function271b ; 2718 + inc d ; 271a + dec c ; 271b + jr nz, Function26fe ; 271c + ret ; 271e +; 271f + +Function271f:: + ld a, [$d088] ; 271f + add a, $6 ; 2722 + ldh [$ffb2], a ; 2724 + push de ; 2726 + push hl ; 2727 + ld a, [hli] ; 2728 + ld [de], a ; 2729 + inc de ; 272a + ld a, [hli] ; 272b + ld [de], a ; 272c + inc de ; 272d + ld a, [hli] ; 272e + ld [de], a ; 272f + inc de ; 2730 + pop hl ; 2731 + ldh a, [$ffb1] ; 2732 + ld e, a ; 2734 + ld d, $0 ; 2735 + add hl, de ; 2737 + pop de ; 2738 + ldh a, [$ffb2] ; 2739 + add e ; 273b + ld e, a ; 273c + jr nc, Function2740 ; 273d + inc d ; 273f + dec b ; 2740 + jr nz, Function271f ; 2741 + ret ; 2743 +; 2744 + +Function2744:: + ld [$d159], a ; 2744 + ret ; 2747 +; 2748 + +Function2748:: + ld [$d160], a ; 2748 + ld a, l ; 274b + ld [$d161], a ; 274c + ld a, h ; 274f + ld [$d162], a ; 2750 + ld a, $ff ; 2753 + ld [$d15f], a ; 2755 + scf ; 2758 + ret ; 2759 +; 275a + +Function275a:: + ld a, [$d15f] ; 275a + and a ; 275d + ret nz ; 275e + call Function2d30 ; 275f + jr Function2748 ; 2762 +; 2764 + +Function2764:: + ld b, a ; 2764 + ldh a, [hROMBank] ; 2765 + push af ; 2767 + call Function2d2b ; 2768 + call Function277c ; 276b + jr nc, Function2779 ; 276e + call Function2d30 ; 2770 + ld b, a ; 2773 + ld d, h ; 2774 + ld e, l ; 2775 + call Function279d ; 2776 + pop af ; 2779 + rst Bankswitch ; 277a + ret ; 277b +; 277c + +Function277c:: + ld a, [$d954] ; 277c + ld c, a ; 277f + and a ; 2780 + ret z ; 2781 + ld hl, $d955 ; 2782 + ld a, [hli] ; 2785 + ld h, [hl] ; 2786 + ld l, a ; 2787 + or h ; 2788 + ret z ; 2789 + ld de, $3 ; 278a + ld a, [hl] ; 278d + cp b ; 278e + jr z, Function2797 ; 278f + add hl, de ; 2791 + dec c ; 2792 + jr nz, Function278d ; 2793 + xor a ; 2795 + ret ; 2796 +; 2797 + +Function2797:: + inc hl ; 2797 + ld a, [hli] ; 2798 + ld h, [hl] ; 2799 + ld l, a ; 279a + scf ; 279b + ret ; 279c +; 279d + +Function279d:: + ld a, $25 ; 279d + ld hl, $7365 ; 279f + rst FarCall ; 27a2 + ld a, [$d15e] ; 27a3 + push af ; 27a6 + ld hl, $d15b ; 27a7 + ld a, [hl] ; 27aa + push af ; 27ab + set 1, [hl] ; 27ac + ld a, $25 ; 27ae + ld hl, $6b89 ; 27b0 + rst FarCall ; 27b3 + ld a, $25 ; 27b4 + ld hl, $6b91 ; 27b6 + rst FarCall ; 27b9 + pop af ; 27ba + ld [$d15b], a ; 27bb + pop af ; 27be + ld [$d15e], a ; 27bf + ret ; 27c2 +; 27c3 + +Function27c3:: + ldh a, [hROMBank] ; 27c3 + push af ; 27c5 + ld a, b ; 27c6 + rst Bankswitch ; 27c7 + call Functionf68 ; 27c8 + ld a, $1 ; 27cb + ldh [$ffda], a ; 27cd + call Functionf61 ; 27cf + xor a ; 27d2 + ldh [$ffda], a ; 27d3 + pop af ; 27d5 + rst Bankswitch ; 27d6 + ret ; 27d7 +; 27d8 + +Function27d8:: + ld [$d156], a ; 27d8 + ldh a, [hROMBank] ; 27db + push af ; 27dd + ld a, [$d156] ; 27de + rst Bankswitch ; 27e1 + call Function27e8 ; 27e2 + pop af ; 27e5 + rst Bankswitch ; 27e6 + ret ; 27e7 +; 27e8 + +Function27e8:: + push de ; 27e8 + ret ; 27e9 +; 27ea + +Function27ea:: + ldh a, [hROMBank] ; 27ea + push af ; 27ec + ld a, b ; 27ed + rst Bankswitch ; 27ee + ld a, c ; 27ef + call Function1886 ; 27f0 + pop hl ; 27f3 + ld a, h ; 27f4 + rst Bankswitch ; 27f5 + ret ; 27f6 +; 27f7 + +Function27f7:: + push hl ; 27f7 + push bc ; 27f8 + ldh a, [hROMBank] ; 27f9 + push af ; 27fb + ld a, [$d160] ; 27fc + rst Bankswitch ; 27ff + ld hl, $d161 ; 2800 + ld c, [hl] ; 2803 + inc hl ; 2804 + ld b, [hl] ; 2805 + ld a, [bc] ; 2806 + inc bc ; 2807 + ld [hl], b ; 2808 + dec hl ; 2809 + ld [hl], c ; 280a + ld b, a ; 280b + pop af ; 280c + rst Bankswitch ; 280d + ld a, b ; 280e + pop bc ; 280f + pop hl ; 2810 + ret ; 2811 +; 2812 + +Function2812:: + ld d, c ; 2812 + dec d ; 2813 + jr z, Function282c ; 2814 + add h ; 2816 + ld e, e ; 2817 + ld h, l ; 2818 + ld d, b ; 2819 + ld d, d ; 281a + dec e ; 281b + jr z, Function2834 ; 281c + sub e ; 281e + ld e, e ; 281f + ld h, l ; 2820 + ld d, b ; 2821 + ld d, d ; 2822 + dec h ; 2823 + jr z, Function283c ; 2824 + sbc l ; 2826 + ld e, e ; 2827 + ld h, l ; 2828 + ld d, b ; 2829 + ldh a, [$ffb1] ; 282a + ld e, a ; 282c + ld d, $0 ; 282d + ld hl, $d545 ; 282f + add hl, de ; 2832 + ld a, [hl] ; 2833 + ret ; 2834 +; 2835 + +Function2835:: + ldh a, [$ffb1] ; 2835 + ld e, a ; 2837 + ld d, $0 ; 2838 + ld hl, $d545 ; 283a + add hl, de ; 283d + ld [hl], $ff ; 283e + ret ; 2840 +; 2841 + +Function2841:: + ldh a, [$ffb1] ; 2841 + ld e, a ; 2843 + ld d, $0 ; 2844 + ld hl, $d545 ; 2846 + add hl, de ; 2849 + ld [hl], $0 ; 284a + ret ; 284c +; 284d + +Function284d:: + ld hl, $c3a0 ; 284d + ld de, $cc20 ; 2850 + call Function28da ; 2853 + ld c, $28 ; 2856 + call Functiond64 ; 2858 + ld a, [$d05b] ; 285b + ld e, a ; 285e + ld a, [$d05c] ; 285f + ld d, a ; 2862 + call Function28f6 ; 2863 + ld a, $1 ; 2866 + ldh [$ffdd], a ; 2868 + ret ; 286a +; 286b + +Function286b:: + ld hl, $c4e0 ; 286b + ld de, $cc20 ; 286e + call Function28da ; 2871 + ld c, $28 ; 2874 + call Functiond64 ; 2876 + ld a, [$d05b] ; 2879 + ld l, a ; 287c + ld a, [$d05c] ; 287d + ld h, a ; 2880 + ld bc, $200 ; 2881 + add hl, bc ; 2884 + ld a, h ; 2885 + and $3 ; 2886 + or $98 ; 2888 + ld e, l ; 288a + ld d, a ; 288b + call Function28f6 ; 288c + ld a, $1 ; 288f + ldh [$ffdd], a ; 2891 + ret ; 2893 +; 2894 + +Function2894:: + ld hl, $c3a0 ; 2894 + ld de, $cc20 ; 2897 + call Function28e3 ; 289a + ld c, $24 ; 289d + call Functiond64 ; 289f + ld a, [$d05b] ; 28a2 + ld e, a ; 28a5 + ld a, [$d05c] ; 28a6 + ld d, a ; 28a9 + call Function291b ; 28aa + ld a, $1 ; 28ad + ldh [$ffdd], a ; 28af + ret ; 28b1 +; 28b2 + +Function28b2:: + ld hl, $c3b2 ; 28b2 + ld de, $cc20 ; 28b5 + call Function28e3 ; 28b8 + ld c, $24 ; 28bb + call Functiond64 ; 28bd + ld a, [$d05b] ; 28c0 + ld e, a ; 28c3 + and $e0 ; 28c4 + ld b, a ; 28c6 + ld a, e ; 28c7 + add a, $12 ; 28c8 + and $1f ; 28ca + or b ; 28cc + ld e, a ; 28cd + ld a, [$d05c] ; 28ce + ld d, a ; 28d1 + call Function291b ; 28d2 + ld a, $1 ; 28d5 + ldh [$ffdd], a ; 28d7 + ret ; 28d9 +; 28da + +Function28da:: + ld c, $28 ; 28da + ld a, [hli] ; 28dc + ld [de], a ; 28dd + inc de ; 28de + dec c ; 28df + jr nz, Function28dc ; 28e0 + ret ; 28e2 +; 28e3 + +Function28e3:: + ld c, $12 ; 28e3 + ld a, [hli] ; 28e5 + ld [de], a ; 28e6 + inc de ; 28e7 + ld a, [hl] ; 28e8 + ld [de], a ; 28e9 + inc de ; 28ea + ld a, $13 ; 28eb + add l ; 28ed + ld l, a ; 28ee + jr nc, Function28f2 ; 28ef + inc h ; 28f1 + dec c ; 28f2 + jr nz, Function28e5 ; 28f3 + ret ; 28f5 +; 28f6 + +Function28f6:: + ld hl, $cc70 ; 28f6 + push de ; 28f9 + call Function2902 ; 28fa + pop de ; 28fd + ld a, $20 ; 28fe + add e ; 2900 + ld e, a ; 2901 + ld c, $a ; 2902 + ld a, e ; 2904 + ld [hli], a ; 2905 + ld a, d ; 2906 + ld [hli], a ; 2907 + ld a, e ; 2908 + inc a ; 2909 + inc a ; 290a + and $1f ; 290b + ld b, a ; 290d + ld a, e ; 290e + and $e0 ; 290f + or b ; 2911 + ld e, a ; 2912 + dec c ; 2913 + jr nz, Function2904 ; 2914 + ld a, $14 ; 2916 + ldh [$ffde], a ; 2918 + ret ; 291a +; 291b + +Function291b:: + ld hl, $cc70 ; 291b + ld c, $12 ; 291e + ld a, e ; 2920 + ld [hli], a ; 2921 + ld a, d ; 2922 + ld [hli], a ; 2923 + ld a, $20 ; 2924 + add e ; 2926 + ld e, a ; 2927 + jr nc, Function2931 ; 2928 + inc d ; 292a + ld a, d ; 292b + and $3 ; 292c + or $98 ; 292e + ld d, a ; 2930 + dec c ; 2931 + jr nz, Function2920 ; 2932 + ld a, $12 ; 2934 + ldh [$ffde], a ; 2936 + ret ; 2938 +; 2939 + +Function2939:: + ld hl, $cc20 ; 2939 + ld bc, $78 ; 293c + xor a ; 293f + call Function314c ; 2940 + ret ; 2943 +; 2944 + +Function2944:: + ld hl, $d0c3 ; 2944 + ld a, [hli] ; 2947 + ld h, [hl] ; 2948 + ld l, a ; 2949 + ld de, $9000 ; 294a + ld a, [$d0c2] ; 294d + call Functionaf0 ; 2950 + ld a, [$d082] ; 2953 + cp $1 ; 2956 + jr z, Function2960 ; 2958 + cp $2 ; 295a + jr z, Function2960 ; 295c + jr Function2966 ; 295e +; 2960 + +Function2960:: + ld a, $7 ; 2960 + ld hl, $4000 ; 2962 + rst FarCall ; 2965 + xor a ; 2966 + ldh [$ffe1], a ; 2967 + ret ; 2969 +; 296a + +Function296a:: + ld hl, $d07d ; 296a + ld a, [hli] ; 296d + ld h, [hl] ; 296e + ld l, a ; 296f + ld de, $da04 ; 2970 + ld c, $5 ; 2973 + ld b, $6 ; 2975 + push bc ; 2977 + push hl ; 2978 + ld a, [hli] ; 2979 + ld [de], a ; 297a + inc de ; 297b + dec b ; 297c + jr nz, Function2979 ; 297d + pop hl ; 297f + ld a, [$d088] ; 2980 + add a, $6 ; 2983 + ld c, a ; 2985 + ld b, $0 ; 2986 + add hl, bc ; 2988 + pop bc ; 2989 + dec c ; 298a + jr nz, Function2977 ; 298b + ret ; 298d +; 298e + +Function298e:: + ld hl, $d07d ; 298e + ld a, [hli] ; 2991 + ld h, [hl] ; 2992 + ld l, a ; 2993 + ld de, $da04 ; 2994 + ld a, [$d088] ; 2997 + add a, $6 ; 299a + ldh [$ffb1], a ; 299c + ld a, [$ce86] ; 299e + and a ; 29a1 + jr z, Function29bc ; 29a2 + cp $1 ; 29a4 + jr z, Function29b1 ; 29a6 + cp $2 ; 29a8 + jr z, Function29c5 ; 29aa + cp $3 ; 29ac + jr z, Function29cb ; 29ae + ret ; 29b0 +; 29b1 + +Function29b1:: + ld de, $da0a ; 29b1 + ldh a, [$ffb1] ; 29b4 + ld c, a ; 29b6 + ld b, $0 ; 29b7 + add hl, bc ; 29b9 + jr Function29bf ; 29ba +; 29bc + +Function29bc:: + ld de, $da04 ; 29bc + ld b, $6 ; 29bf + ld c, $4 ; 29c1 + jr Function29e8 ; 29c3 +; 29c5 + +Function29c5:: + ld de, $da05 ; 29c5 + inc hl ; 29c8 + jr Function29ce ; 29c9 +; 29cb + +Function29cb:: + ld de, $da04 ; 29cb + ld b, $5 ; 29ce + ld c, $5 ; 29d0 + jr Function29e8 ; 29d2 +; 29d4 + +Function29d4:: + ld hl, $d07d ; 29d4 + ld a, [hli] ; 29d7 + ld h, [hl] ; 29d8 + ld l, a ; 29d9 + ld a, [$d088] ; 29da + add a, $6 ; 29dd + ldh [$ffb1], a ; 29df + ld de, $da04 ; 29e1 + ld b, $6 ; 29e4 + ld c, $5 ; 29e6 + push bc ; 29e8 + push hl ; 29e9 + push de ; 29ea + ld a, [de] ; 29eb + inc de ; 29ec + ld [hli], a ; 29ed + dec b ; 29ee + jr nz, Function29eb ; 29ef + pop de ; 29f1 + ld a, e ; 29f2 + add a, $6 ; 29f3 + ld e, a ; 29f5 + jr nc, Function29f9 ; 29f6 + inc d ; 29f8 + pop hl ; 29f9 + ldh a, [$ffb1] ; 29fa + ld c, a ; 29fc + ld b, $0 ; 29fd + add hl, bc ; 29ff + pop bc ; 2a00 + dec c ; 2a01 + jr nz, Function29e8 ; 2a02 + ret ; 2a04 +; 2a05 + +Function2a05:: + xor a ; 2a05 + ld [$cea7], a ; 2a06 + call Function2a5d ; 2a09 + call Function2a3e ; 2a0c + ld a, [$d20d] ; 2a0f + ld d, a ; 2a12 + ld a, [$d20e] ; 2a13 + ld e, a ; 2a16 + call Function2b21 ; 2a17 + ld [$d20b], a ; 2a1a + call Function2ae4 ; 2a1d + ret nz ; 2a20 + ld a, [$d20b] ; 2a21 + and $7 ; 2a24 + ld hl, $2a36 ; 2a26 + add l ; 2a29 + ld l, a ; 2a2a + ld a, $0 ; 2a2b + adc h ; 2a2d + ld h, a ; 2a2e + ld a, [hl] ; 2a2f + ld hl, $cea7 ; 2a30 + or [hl] ; 2a33 + ld [hl], a ; 2a34 + ret ; 2a35 +; 2a36 + +Function2a36:: + ld bc, $402 ; 2a36 + ld [$a09], sp ; 2a39 + dec b ; 2a3c + ld b, $fa ; 2a3d + dec c ; 2a3f + jp nc, Functionfa57 ; 2a40 + ld c, $d2 ; 2a43 + ld e, a ; 2a45 + push de ; 2a46 + inc e ; 2a47 + call Function2b21 ; 2a48 + ld [$cea3], a ; 2a4b + call Function2a7c ; 2a4e + pop de ; 2a51 + dec e ; 2a52 + call Function2b21 ; 2a53 + ld [$cea4], a ; 2a56 + call Function2a96 ; 2a59 + ret ; 2a5c +; 2a5d + +Function2a5d:: + ld a, [$d20d] ; 2a5d + ld d, a ; 2a60 + ld a, [$d20e] ; 2a61 + ld e, a ; 2a64 + push de ; 2a65 + dec d ; 2a66 + call Function2b21 ; 2a67 + ld [$cea5], a ; 2a6a + call Function2aca ; 2a6d + pop de ; 2a70 + inc d ; 2a71 + call Function2b21 ; 2a72 + ld [$cea6], a ; 2a75 + call Function2ab0 ; 2a78 + ret ; 2a7b +; 2a7c + +Function2a7c:: + call Function2ae4 ; 2a7c + ret nz ; 2a7f + ld a, [$cea3] ; 2a80 + and $7 ; 2a83 + cp $2 ; 2a85 + jr z, Function2a90 ; 2a87 + cp $6 ; 2a89 + jr z, Function2a90 ; 2a8b + cp $7 ; 2a8d + ret nz ; 2a8f + ld hl, $cea7 ; 2a90 + set 3, [hl] ; 2a93 + ret ; 2a95 +; 2a96 + +Function2a96:: + call Function2ae4 ; 2a96 + ret nz ; 2a99 + ld a, [$cea4] ; 2a9a + and $7 ; 2a9d + cp $3 ; 2a9f + jr z, Function2aaa ; 2aa1 + cp $4 ; 2aa3 + jr z, Function2aaa ; 2aa5 + cp $5 ; 2aa7 + ret nz ; 2aa9 + ld hl, $cea7 ; 2aaa + set 3, [hl] ; 2aad + ret ; 2aaf +; 2ab0 + +Function2ab0:: + call Function2ae4 ; 2ab0 + ret nz ; 2ab3 + ld a, [$cea6] ; 2ab4 + and $7 ; 2ab7 + cp $1 ; 2ab9 + jr z, Function2ac4 ; 2abb + cp $5 ; 2abd + jr z, Function2ac4 ; 2abf + cp $7 ; 2ac1 + ret nz ; 2ac3 + ld hl, $cea7 ; 2ac4 + set 3, [hl] ; 2ac7 + ret ; 2ac9 +; 2aca + +Function2aca:: + call Function2ae4 ; 2aca + ret nz ; 2acd + ld a, [$cea5] ; 2ace + and $7 ; 2ad1 + cp $0 ; 2ad3 + jr z, Function2ade ; 2ad5 + cp $4 ; 2ad7 + jr z, Function2ade ; 2ad9 + cp $6 ; 2adb + ret nz ; 2add + ld hl, $cea7 ; 2ade + set 3, [hl] ; 2ae1 + ret ; 2ae3 +; 2ae4 + +Function2ae4:: + and $f0 ; 2ae4 + cp $b0 ; 2ae6 + ret z ; 2ae8 + cp $c0 ; 2ae9 + ret ; 2aeb +; 2aec + +Function2aec:: + ld a, [$d205] ; 2aec + and $c ; 2aef + srl a ; 2af1 + srl a ; 2af3 + ld l, a ; 2af5 + ld h, $0 ; 2af6 + add hl, hl ; 2af8 + add hl, hl ; 2af9 + ld de, $2b11 ; 2afa + add hl, de ; 2afd + ld d, [hl] ; 2afe + inc hl ; 2aff + ld e, [hl] ; 2b00 + inc hl ; 2b01 + ld a, [hli] ; 2b02 + ld h, [hl] ; 2b03 + ld l, a ; 2b04 + ld a, [$d20d] ; 2b05 + add d ; 2b08 + ld d, a ; 2b09 + ld a, [$d20e] ; 2b0a + add e ; 2b0d + ld e, a ; 2b0e + ld a, [hl] ; 2b0f + ret ; 2b10 +; 2b11 + +Function2b11:: + nop ; 2b11 + ld bc, $cea3 ; 2b12 + nop ; 2b15 + rst $38 ; 2b16 + and h ; 2b17 + adc a, $ff ; 2b18 + nop ; 2b1a + and l ; 2b1b + adc a, $1 ; 2b1c + nop ; 2b1e + and [hl] ; 2b1f + adc a, $cd ; 2b20 + ld c, e ; 2b22 + dec hl ; 2b23 + ld a, [hl] ; 2b24 + and a ; 2b25 + jr z, Function2b48 ; 2b26 + ld l, a ; 2b28 + ld h, $0 ; 2b29 + add hl, hl ; 2b2b + add hl, hl ; 2b2c + ld a, [$d0c9] ; 2b2d + ld c, a ; 2b30 + ld a, [$d0ca] ; 2b31 + ld b, a ; 2b34 + add hl, bc ; 2b35 + rr d ; 2b36 + jr nc, Function2b3b ; 2b38 + inc hl ; 2b3a + rr e ; 2b3b + jr nc, Function2b41 ; 2b3d + inc hl ; 2b3f + inc hl ; 2b40 + ld a, [$d0c8] ; 2b41 + call Function3128 ; 2b44 + ret ; 2b47 +; 2b48 + +Function2b48:: + ld a, $ff ; 2b48 + ret ; 2b4a +; 2b4b + +Function2b4b:: + ld a, [$d088] ; 2b4b + add a, $6 ; 2b4e + ld c, a ; 2b50 + ld b, $0 ; 2b51 + ld hl, $c701 ; 2b53 + add hl, bc ; 2b56 + ld a, e ; 2b57 + srl a ; 2b58 + jr z, Function2b69 ; 2b5a + and a ; 2b5c + srl a ; 2b5d + jr nc, Function2b62 ; 2b5f + add hl, bc ; 2b61 + sla c ; 2b62 + rl b ; 2b64 + and a ; 2b66 + jr nz, Function2b5d ; 2b67 + ld c, d ; 2b69 + srl c ; 2b6a + ld b, $0 ; 2b6c + add hl, bc ; 2b6e + ret ; 2b6f +; 2b70 + +Function2b70:: + call Function2aec ; 2b70 + ld b, a ; 2b73 + ld a, d ; 2b74 + sub a, $4 ; 2b75 + ld d, a ; 2b77 + ld a, e ; 2b78 + sub a, $4 ; 2b79 + ld e, a ; 2b7b + ld a, [$d94b] ; 2b7c + and a ; 2b7f + ret z ; 2b80 + ld c, a ; 2b81 + ldh a, [hROMBank] ; 2b82 + push af ; 2b84 + call Function2d2b ; 2b85 + call Function2b8f ; 2b88 + pop hl ; 2b8b + ld a, h ; 2b8c + rst Bankswitch ; 2b8d + ret ; 2b8e +; 2b8f + +Function2b8f:: + ld hl, $d94c ; 2b8f + ld a, [hli] ; 2b92 + ld h, [hl] ; 2b93 + ld l, a ; 2b94 + push hl ; 2b95 + ld a, [hli] ; 2b96 + cp e ; 2b97 + jr nz, Function2ba0 ; 2b98 + ld a, [hli] ; 2b9a + cp d ; 2b9b + jr nz, Function2ba0 ; 2b9c + jr Function2bad ; 2b9e +; 2ba0 + +Function2ba0:: + pop hl ; 2ba0 + ld a, $5 ; 2ba1 + add l ; 2ba3 + ld l, a ; 2ba4 + jr nc, Function2ba8 ; 2ba5 + inc h ; 2ba7 + dec c ; 2ba8 + jr nz, Function2b95 ; 2ba9 + xor a ; 2bab + ret ; 2bac +; 2bad + +Function2bad:: + pop hl ; 2bad + ld de, $cf29 ; 2bae + ld bc, $5 ; 2bb1 + call Function311a ; 2bb4 + scf ; 2bb7 + ret ; 2bb8 +; 2bb9 + +Function2bb9:: + ld a, [$d948] ; 2bb9 + and a ; 2bbc + ret z ; 2bbd + ld c, a ; 2bbe + ldh a, [hROMBank] ; 2bbf + push af ; 2bc1 + call Function2d2b ; 2bc2 + call Function2bcc ; 2bc5 + pop hl ; 2bc8 + ld a, h ; 2bc9 + rst Bankswitch ; 2bca + ret ; 2bcb +; 2bcc + +Function2bcc:: + ld hl, $d949 ; 2bcc + ld a, [hli] ; 2bcf + ld h, [hl] ; 2bd0 + ld l, a ; 2bd1 + call Function1f69 ; 2bd2 + ld b, a ; 2bd5 + ld a, [$d20d] ; 2bd6 + sub a, $4 ; 2bd9 + ld d, a ; 2bdb + ld a, [$d20e] ; 2bdc + sub a, $4 ; 2bdf + ld e, a ; 2be1 + push hl ; 2be2 + ld a, [hli] ; 2be3 + cp b ; 2be4 + jr z, Function2beb ; 2be5 + cp $ff ; 2be7 + jr nz, Function2bf5 ; 2be9 + ld a, [hli] ; 2beb + cp e ; 2bec + jr nz, Function2bf5 ; 2bed + ld a, [hli] ; 2bef + cp d ; 2bf0 + jr nz, Function2bf5 ; 2bf1 + jr Function2c02 ; 2bf3 +; 2bf5 + +Function2bf5:: + pop hl ; 2bf5 + ld a, $8 ; 2bf6 + add l ; 2bf8 + ld l, a ; 2bf9 + jr nc, Function2bfd ; 2bfa + inc h ; 2bfc + dec c ; 2bfd + jr nz, Function2be2 ; 2bfe + xor a ; 2c00 + ret ; 2c01 +; 2c02 + +Function2c02:: + pop hl ; 2c02 + ld de, $cf29 ; 2c03 + ld bc, $8 ; 2c06 + call Function311a ; 2c09 + scf ; 2c0c + ret ; 2c0d +; 2c0e + +Function2c0e:: + xor a ; 2c0e + ldh [$ffd6], a ; 2c0f + call Function1be0 ; 2c11 + ld a, $23 ; 2c14 + ld hl, $43ab ; 2c16 + rst FarCall ; 2c19 + call Function30ff ; 2c1a + call Function2f93 ; 2c1d + ret ; 2c20 +; 2c21 + +Function2c21:: + call Function3449 ; 2c21 + call Function2c87 ; 2c24 + call Function196f ; 2c27 + call Function1bef ; 2c2a + call Functiond2a ; 2c2d + jr Function2c41 ; 2c30 +; 2c32 + +Function2c32:: + call Function3449 ; 2c32 + call Function1bef ; 2c35 + call Function2c87 ; 2c38 + call Function196f ; 2c3b + call Functiond2a ; 2c3e + ld b, $9 ; 2c41 + call Function3583 ; 2c43 + call Function3456 ; 2c46 + ld a, $23 ; 2c49 + ld hl, $43a0 ; 2c4b + rst FarCall ; 2c4e + call Function2fa4 ; 2c4f + ret ; 2c52 +; 2c53 + +Function2c53:: + push af ; 2c53 + ld a, $1 ; 2c54 + ld [$c1cd], a ; 2c56 + call Function3449 ; 2c59 + call Function30ff ; 2c5c + call Function2c87 ; 2c5f + ld hl, $c490 ; 2c62 + ld bc, $412 ; 2c65 + call Functioneef ; 2c68 + ld hl, $cfe5 ; 2c6b + set 0, [hl] ; 2c6e + call Function196f ; 2c70 + call Function3456 ; 2c73 + ld b, $9 ; 2c76 + call Function3583 ; 2c78 + call Function359 ; 2c7b + call Function32e ; 2c7e + ld a, $1 ; 2c81 + ldh [$ffe0], a ; 2c83 + pop af ; 2c85 + ret ; 2c86 +; 2c87 + +Function2c87:: + call Function432 ; 2c87 + call Function30ff ; 2c8a + ld a, $5 ; 2c8d + ld hl, $414b ; 2c8f + rst FarCall ; 2c92 + call Functiond9e ; 2c93 + call Functiondac ; 2c96 + ldh a, [hROMBank] ; 2c99 + push af ; 2c9b + ld a, [$da00] ; 2c9c + ld b, a ; 2c9f + ld a, [$da01] ; 2ca0 + ld c, a ; 2ca3 + call Function2cfd ; 2ca4 + ld a, $23 ; 2ca7 + ld hl, $4356 ; 2ca9 + rst FarCall ; 2cac + call Function1fc1 ; 2cad + call Function2944 ; 2cb0 + ld a, $8 ; 2cb3 + call Function3e92 ; 2cb5 + pop af ; 2cb8 + rst Bankswitch ; 2cb9 + call Function454 ; 2cba + ret ; 2cbd +; 2cbe + +Function2cbe:: + ld a, [$da00] ; 2cbe + ld b, a ; 2cc1 + ld a, [$da01] ; 2cc2 + ld c, a ; 2cc5 + push bc ; 2cc6 + dec b ; 2cc7 + ld c, b ; 2cc8 + ld b, $0 ; 2cc9 + ld hl, $40ed ; 2ccb + add hl, bc ; 2cce + add hl, bc ; 2ccf + ld a, [hli] ; 2cd0 + ld h, [hl] ; 2cd1 + ld l, a ; 2cd2 + pop bc ; 2cd3 + dec c ; 2cd4 + ld b, $0 ; 2cd5 + ld a, $9 ; 2cd7 + call Function31a3 ; 2cd9 + ret ; 2cdc +; 2cdd + +Function2cdd:: + ld a, [$da00] ; 2cdd + ld b, a ; 2ce0 + ld a, [$da01] ; 2ce1 + ld c, a ; 2ce4 + ldh a, [hROMBank] ; 2ce5 + push af ; 2ce7 + ld a, $25 ; 2ce8 + rst Bankswitch ; 2cea + call Function2cc6 ; 2ceb + add hl, de ; 2cee + ld c, [hl] ; 2cef + inc hl ; 2cf0 + ld b, [hl] ; 2cf1 + pop af ; 2cf2 + rst Bankswitch ; 2cf3 + ret ; 2cf4 +; 2cf5 + +Function2cf5:: + ld a, [$da00] ; 2cf5 + ld b, a ; 2cf8 + ld a, [$da01] ; 2cf9 + ld c, a ; 2cfc + call Function2d0a ; 2cfd + rst Bankswitch ; 2d00 + ret ; 2d01 +; 2d02 + +Function2d02:: + ld a, [$da00] ; 2d02 + ld b, a ; 2d05 + ld a, [$da01] ; 2d06 + ld c, a ; 2d09 + push hl ; 2d0a + push de ; 2d0b + ld de, $0 ; 2d0c + call Function2ce5 ; 2d0f + ld a, c ; 2d12 + pop de ; 2d13 + pop hl ; 2d14 + ret ; 2d15 +; 2d16 + +Function2d16:: + ldh a, [hROMBank] ; 2d16 + push af ; 2d18 + ld a, $25 ; 2d19 + rst Bankswitch ; 2d1b + call Function2cbe ; 2d1c + ld de, $d081 ; 2d1f + ld bc, $5 ; 2d22 + call Function311a ; 2d25 + pop af ; 2d28 + rst Bankswitch ; 2d29 + ret ; 2d2a +; 2d2b + +Function2d2b:: + ld a, [$d08c] ; 2d2b + rst Bankswitch ; 2d2e + ret ; 2d2f +; 2d30 + +Function2d30:: + ld a, [$d08c] ; 2d30 + ret ; 2d33 +; 2d34 + +Function2d34:: + push hl ; 2d34 + push de ; 2d35 + push bc ; 2d36 + push bc ; 2d37 + ld de, $3 ; 2d38 + call Function2ce5 ; 2d3b + ld l, c ; 2d3e + ld h, b ; 2d3f + pop bc ; 2d40 + push hl ; 2d41 + ld de, $0 ; 2d42 + call Function2ce5 ; 2d45 + pop hl ; 2d48 + ld de, $3 ; 2d49 + add hl, de ; 2d4c + ld a, c ; 2d4d + call Function3128 ; 2d4e + rst Bankswitch ; 2d51 + pop bc ; 2d52 + pop de ; 2d53 + pop hl ; 2d54 + ret ; 2d55 +; 2d56 + +Function2d56:: + push bc ; 2d56 + push de ; 2d57 + ld de, $3 ; 2d58 + call Function2cdd ; 2d5b + ld l, c ; 2d5e + ld h, b ; 2d5f + pop de ; 2d60 + pop bc ; 2d61 + ret ; 2d62 +; 2d63 + +Function2d63:: + push hl ; 2d63 + push de ; 2d64 + push bc ; 2d65 + ld de, $2 ; 2d66 + call Function2cdd ; 2d69 + ld a, c ; 2d6c + pop bc ; 2d6d + pop de ; 2d6e + pop hl ; 2d6f + ret ; 2d70 +; 2d71 + +Function2d71:: + ret ; 2d71 + push hl ; 2d72 + push de ; 2d73 + push bc ; 2d74 + ld de, $2 ; 2d75 + call Function2ce5 ; 2d78 + ld a, c ; 2d7b + pop bc ; 2d7c + pop de ; 2d7d + pop hl ; 2d7e + ret ; 2d7f +; 2d80 + +Function2d80:: + ld de, $1 ; 2d80 + call Function2ce5 ; 2d83 + ld a, c ; 2d86 + ret ; 2d87 +; 2d88 + +Function2d88:: + push hl ; 2d88 + push de ; 2d89 + push bc ; 2d8a + ld de, $5 ; 2d8b + call Function2ce5 ; 2d8e + ld a, c ; 2d91 + pop bc ; 2d92 + pop de ; 2d93 + pop hl ; 2d94 + ret ; 2d95 +; 2d96 + +Function2d96:: + push hl ; 2d96 + push bc ; 2d97 + ld de, $6 ; 2d98 + call Function2cdd ; 2d9b + ld a, c ; 2d9e + cp $64 ; 2d9f + jr z, Function2dc1 ; 2da1 + bit 7, c ; 2da3 + jr nz, Function2dad ; 2da5 + ld e, c ; 2da7 + ld d, $0 ; 2da8 + pop bc ; 2daa + pop hl ; 2dab + ret ; 2dac +; 2dad + +Function2dad:: + ld a, [$d572] ; 2dad + bit 0, a ; 2db0 + jr z, Function2db9 ; 2db2 + ld de, $56 ; 2db4 + jr Function2daa ; 2db7 +; 2db9 + +Function2db9:: + ld a, c ; 2db9 + and $7f ; 2dba + ld e, a ; 2dbc + ld d, $0 ; 2dbd + jr Function2daa ; 2dbf +; 2dc1 + +Function2dc1:: + ld a, [$d572] ; 2dc1 + bit 7, a ; 2dc4 + jr z, Function2dcd ; 2dc6 + ld de, $48 ; 2dc8 + jr Function2daa ; 2dcb +; 2dcd + +Function2dcd:: + ld de, $26 ; 2dcd + jr Function2daa ; 2dd0 +; 2dd2 + +Function2dd2:: + call Function2de0 ; 2dd2 + and $f ; 2dd5 + ret ; 2dd7 +; 2dd8 + +Function2dd8:: + call Function2de0 ; 2dd8 + and $f0 ; 2ddb + swap a ; 2ddd + ret ; 2ddf +; 2de0 + +Function2de0:: + push hl ; 2de0 + push bc ; 2de1 + ld de, $7 ; 2de2 + call Function2cdd ; 2de5 + ld a, c ; 2de8 + pop bc ; 2de9 + pop hl ; 2dea + ret ; 2deb +; 2dec + +Function2dec:: + push de ; 2dec + push hl ; 2ded + push bc ; 2dee + ld de, $8 ; 2def + call Function2cdd ; 2df2 + ld a, c ; 2df5 + pop bc ; 2df6 + pop hl ; 2df7 + pop de ; 2df8 + ret ; 2df9 +; 2dfa + +Function2dfa:: + push hl ; 2dfa + push bc ; 2dfb + ld hl, $56be ; 2dfc + ld bc, $f ; 2dff + ld a, [$d082] ; 2e02 + call Function31a3 ; 2e05 + ld de, $d0c2 ; 2e08 + ld bc, $f ; 2e0b + ld a, $5 ; 2e0e + call Functiondcd ; 2e10 + pop bc ; 2e13 + pop hl ; 2e14 + ret ; 2e15 +; 2e16 + +Function2e16:: + nop ; 2e16 + nop ; 2e17 + nop ; 2e18 + nop ; 2e19 + nop ; 2e1a + nop ; 2e1b + nop ; 2e1c + nop ; 2e1d + nop ; 2e1e + nop ; 2e1f + nop ; 2e20 + nop ; 2e21 + nop ; 2e22 + nop ; 2e23 + nop ; 2e24 + nop ; 2e25 + ret ; 2e26 +; 2e27 + +Function2e27:: + ld [$d156], a ; 2e27 + ldh a, [hROMBank] ; 2e2a + push af ; 2e2c + ld a, [$d156] ; 2e2d + rst Bankswitch ; 2e30 + call Function2e48 ; 2e31 + ld a, b ; 2e34 + ld [$cfe0], a ; 2e35 + ld a, c ; 2e38 + ld [$cfe1], a ; 2e39 + pop bc ; 2e3c + ld a, b ; 2e3d + rst Bankswitch ; 2e3e + ld a, [$cfe0] ; 2e3f + ld b, a ; 2e42 + ld a, [$cfe1] ; 2e43 + ld c, a ; 2e46 + ret ; 2e47 +; 2e48 + +Function2e48:: + jp [hl] ; 2e48 + ld [$cfdb], a ; 2e49 + ldh a, [hROMBank] ; 2e4c + push af ; 2e4e + ld a, $2 ; 2e4f + rst Bankswitch ; 2e51 + call Function4b3b ; 2e52 + rst Bankswitch ; 2e55 + ld hl, $2e6c ; 2e56 + push hl ; 2e59 + ld a, [$cfde] ; 2e5a + ld h, a ; 2e5d + ld a, [$cfdf] ; 2e5e + ld l, a ; 2e61 + push hl ; 2e62 + ld a, [$cfdc] ; 2e63 + ld h, a ; 2e66 + ld a, [$cfdd] ; 2e67 + ld l, a ; 2e6a + ret ; 2e6b +; 2e6c + +Function2e6c:: + ld a, h ; 2e6c + ld [$cfdc], a ; 2e6d + ld a, l ; 2e70 + ld [$cfdd], a ; 2e71 + pop hl ; 2e74 + ld a, h ; 2e75 + rst Bankswitch ; 2e76 + ld a, [$cfdc] ; 2e77 + ld h, a ; 2e7a + ld a, [$cfdd] ; 2e7b + ld l, a ; 2e7e + ret ; 2e7f +; 2e80 + +Function2e80:: + call Function1e29 ; 2e80 + ldh a, [hROMBank] ; 2e83 + push af ; 2e85 + ld a, $1 ; 2e86 + rst Bankswitch ; 2e88 + call Function6551 ; 2e89 + call Function2ee3 ; 2e8c + call Function65cb ; 2e8f + pop af ; 2e92 + rst Bankswitch ; 2e93 + ret ; 2e94 +; 2e95 + +Function2e95:: + ldh a, [$ffda] ; 2e95 + push af ; 2e97 + ld a, $1 ; 2e98 + ldh [$ffda], a ; 2e9a + call Function2ea3 ; 2e9c + pop af ; 2e9f + ldh [$ffda], a ; 2ea0 + ret ; 2ea2 +; 2ea3 + +Function2ea3:: + call Function1e29 ; 2ea3 + xor a ; 2ea6 + ldh [$ffd6], a ; 2ea7 + call Function1fc1 ; 2ea9 + call Function2ee3 ; 2eac + xor a ; 2eaf + ldh [$ffd6], a ; 2eb0 + call Function2ef1 ; 2eb2 + ld a, $90 ; 2eb5 + ldh [$ffd4], a ; 2eb7 + ld a, $5 ; 2eb9 + ld hl, $415c ; 2ebb + rst FarCall ; 2ebe + call Functiond97 ; 2ebf + ld hl, $d565 ; 2ec2 + res 7, [hl] ; 2ec5 + call Function1ea9 ; 2ec7 + ret ; 2eca +; 2ecb + +Function2ecb:: + call Function1e29 ; 2ecb + ldh a, [hROMBank] ; 2ece + push af ; 2ed0 + ld a, $1 ; 2ed1 + rst Bankswitch ; 2ed3 + call Function6551 ; 2ed4 + call Functionf45 ; 2ed7 + call Function2ee3 ; 2eda + call Function65cb ; 2edd + pop af ; 2ee0 + rst Bankswitch ; 2ee1 + ret ; 2ee2 +; 2ee3 + +Function2ee3:: + ldh a, [$ffda] ; 2ee3 + push af ; 2ee5 + ld a, $1 ; 2ee6 + ldh [$ffda], a ; 2ee8 + call Function348e ; 2eea + pop af ; 2eed + ldh [$ffda], a ; 2eee + ret ; 2ef0 +; 2ef1 + +Function2ef1:: + ldh a, [$ffda] ; 2ef1 + push af ; 2ef3 + ldh a, [$ffd6] ; 2ef4 + push af ; 2ef6 + xor a ; 2ef7 + ldh [$ffd6], a ; 2ef8 + ld a, $1 ; 2efa + ldh [$ffda], a ; 2efc + call Function196f ; 2efe + xor a ; 2f01 + ldh [$ffda], a ; 2f02 + call Function32e ; 2f04 + pop af ; 2f07 + ldh [$ffd6], a ; 2f08 + pop af ; 2f0a + ldh [$ffda], a ; 2f0b + ret ; 2f0d +; 2f0e + +Function2f0e:: + scf ; 2f0e + ret ; 2f0f +; 2f10 + +Function2f10:: + xor a ; 2f10 + ld hl, $d7b7 ; 2f11 + ld [hli], a ; 2f14 + ret ; 2f15 +; 2f16 + +Function2f16:: + xor a ; 2f16 + ld hl, $d93f ; 2f17 + ld [hli], a ; 2f1a + ld [hl], a ; 2f1b + ret ; 2f1c +; 2f1d + +Function2f1d:: + ld a, [$d083] ; 2f1d + cp $2 ; 2f20 + jr z, Function2f29 ; 2f22 + cp $1 ; 2f24 + jr z, Function2f29 ; 2f26 + ret ; 2f28 +; 2f29 + +Function2f29:: + ld hl, $d571 ; 2f29 + res 2, [hl] ; 2f2c + ret ; 2f2e +; 2f2f + +Function2f2f:: + ld hl, $d7b7 ; 2f2f + call Function2f36 ; 2f32 + ret ; 2f35 +; 2f36 + +Function2f36:: + ld a, e ; 2f36 + and $7 ; 2f37 + srl d ; 2f39 + rr e ; 2f3b + srl d ; 2f3d + rr e ; 2f3f + srl d ; 2f41 + rr e ; 2f43 + add hl, de ; 2f45 + ld c, $1 ; 2f46 + rrca ; 2f48 + jr nc, Function2f4d ; 2f49 + rlc c ; 2f4b + rrca ; 2f4d + jr nc, Function2f54 ; 2f4e + rlc c ; 2f50 + rlc c ; 2f52 + rrca ; 2f54 + jr nc, Function2f59 ; 2f55 + swap c ; 2f57 + ld a, b ; 2f59 + cp $1 ; 2f5a + jr c, Function2f68 ; 2f5c + jr z, Function2f64 ; 2f5e + ld a, [hl] ; 2f60 + and c ; 2f61 + ld c, a ; 2f62 + ret ; 2f63 +; 2f64 + +Function2f64:: + ld a, [hl] ; 2f64 + or c ; 2f65 + ld [hl], a ; 2f66 + ret ; 2f67 +; 2f68 + +Function2f68:: + ld a, c ; 2f68 + cpl ; 2f69 + and [hl] ; 2f6a + ld [hl], a ; 2f6b + ret ; 2f6c +; 2f6d + +Function2f6d:: + ld de, $b ; 2f6d + ld b, $2 ; 2f70 + ld a, $3 ; 2f72 + ld hl, $401b ; 2f74 + rst FarCall ; 2f77 + ld a, c ; 2f78 + and a ; 2f79 + ret ; 2f7a +; 2f7b + +Function2f7b:: + ld a, [$c1cb] ; 2f7b + bit 1, a ; 2f7e + ret z ; 2f80 + ldh a, [$ffaa] ; 2f81 + bit 1, a ; 2f83 + ret ; 2f85 +; 2f86 + +Function2f86:: + xor a ; 2f86 + ret ; 2f87 +; 2f88 + +Function2f88:: + xor a ; 2f88 + dec a ; 2f89 + ret ; 2f8a +; 2f8b + +Function2f8b:: + push hl ; 2f8b + ld hl, $c1cb ; 2f8c + bit 1, [hl] ; 2f8f + pop hl ; 2f91 + ret ; 2f92 +; 2f93 + +Function2f93:: + xor a ; 2f93 + ldh [$ffe0], a ; 2f94 + ld a, [$cfe5] ; 2f96 + res 0, a ; 2f99 + ld [$cfe5], a ; 2f9b + ld a, $0 ; 2f9e + ld [$c1cd], a ; 2fa0 + ret ; 2fa3 +; 2fa4 + +Function2fa4:: + ld a, $1 ; 2fa4 + ld [$c1cd], a ; 2fa6 + ld a, [$cfe5] ; 2fa9 + set 0, a ; 2fac + ld [$cfe5], a ; 2fae + ld a, $1 ; 2fb1 + ldh [$ffe0], a ; 2fb3 + ret ; 2fb5 +; 2fb6 + +Function2fb6:: + push hl ; 2fb6 + jr Function2fbc ; 2fb7 +; 2fb9 + +Function2fb9:: + push hl ; 2fb9 + ld c, $a ; 2fba + push bc ; 2fbc + ld a, [hli] ; 2fbd + cp $50 ; 2fbe + jr z, Function2fc9 ; 2fc0 + cp $7f ; 2fc2 + jr nz, Function2fd4 ; 2fc4 + dec c ; 2fc6 + jr nz, Function2fbd ; 2fc7 + pop bc ; 2fc9 + ld l, e ; 2fca + ld h, d ; 2fcb + pop de ; 2fcc + ld b, $0 ; 2fcd + inc c ; 2fcf + call Function311a ; 2fd0 + ret ; 2fd3 +; 2fd4 + +Function2fd4:: + pop bc ; 2fd4 + pop hl ; 2fd5 + ret ; 2fd6 +; 2fd7 + +Function2fd7:: + ld a, [$da00] ; 2fd7 + ld b, a ; 2fda + ld a, [$da01] ; 2fdb + ld c, a ; 2fde + call Function2d88 ; 2fdf + cp $5e ; 2fe2 + jr z, Function2ff9 ; 2fe4 + cp $0 ; 2fe6 + jr nz, Function2ff5 ; 2fe8 + ld a, [$d9f6] ; 2fea + ld b, a ; 2fed + ld a, [$d9f7] ; 2fee + ld c, a ; 2ff1 + call Function2d88 ; 2ff2 + cp $2e ; 2ff5 + jr nc, Function2ffb ; 2ff7 + xor a ; 2ff9 + ret ; 2ffa +; 2ffb + +Function2ffb:: + ld a, $1 ; 2ffb + ret ; 2ffd +; 2ffe + +Function2ffe:: + push hl ; 2ffe + xor a ; 2fff + ld hl, $d17c ; 3000 + ld [hli], a ; 3003 + ld [hli], a ; 3004 + ld [hli], a ; 3005 + ld [hl], a ; 3006 + ld a, [$d17a] ; 3007 + ld l, a ; 300a + ld a, [$d17b] ; 300b + ld h, a ; 300e + or l ; 300f + jr z, Function3053 ; 3010 + ldh a, [hROMBank] ; 3012 + push af ; 3014 + call Function2d2b ; 3015 + ld a, [$d20d] ; 3018 + add a, $4 ; 301b + ld d, a ; 301d + ld a, [$d20e] ; 301e + ld a, $4 ; 3021 + ld e, a ; 3023 + push bc ; 3024 + ld c, $0 ; 3025 + ld a, [hl] ; 3027 + cp $ff ; 3028 + jr z, Function3050 ; 302a + push hl ; 302c + ld a, d ; 302d + cp [hl] ; 302e + jr nz, Function3046 ; 302f + inc hl ; 3031 + ld a, e ; 3032 + cp [hl] ; 3033 + jr nz, Function3046 ; 3034 + ld hl, $d17c ; 3036 + ld b, $1 ; 3039 + push de ; 303b + push bc ; 303c + ld d, $0 ; 303d + ld a, $3 ; 303f + call Function2e49 ; 3041 + pop bc ; 3044 + pop de ; 3045 + pop hl ; 3046 + inc hl ; 3047 + inc hl ; 3048 + inc hl ; 3049 + inc c ; 304a + ld a, c ; 304b + cp $20 ; 304c + jr c, Function3027 ; 304e + pop bc ; 3050 + pop af ; 3051 + rst Bankswitch ; 3052 + pop hl ; 3053 + ret ; 3054 +; 3055 + +Function3055:: + ld a, $3 ; 3055 + ld hl, $67a6 ; 3057 + rst FarCall ; 305a + ret ; 305b +; 305c + +Function305c:: + push hl ; 305c + push de ; 305d + push bc ; 305e + ld a, $3 ; 305f + ld hl, $5434 ; 3061 + rst FarCall ; 3064 + pop bc ; 3065 + pop de ; 3066 + pop hl ; 3067 + ret ; 3068 +; 3069 + +Function3069:: + push hl ; 3069 + push de ; 306a + push bc ; 306b + ldh a, [hROMBank] ; 306c + push af ; 306e + ld a, $3 ; 306f + rst Bankswitch ; 3071 + call Function521a ; 3072 + pop bc ; 3075 + ld a, b ; 3076 + rst Bankswitch ; 3077 + pop bc ; 3078 + pop de ; 3079 + pop hl ; 307a + ret ; 307b +; 307c + +Function307c:: + push bc ; 307c + ldh a, [hROMBank] ; 307d + push af ; 307f + ld a, $3 ; 3080 + rst Bankswitch ; 3082 + push hl ; 3083 + push de ; 3084 + call Function51e2 ; 3085 + pop de ; 3088 + pop hl ; 3089 + pop bc ; 308a + ld a, b ; 308b + rst Bankswitch ; 308c + pop bc ; 308d + ret ; 308e +; 308f + +Function308f:: + push hl ; 308f + push de ; 3090 + push bc ; 3091 + ldh a, [hROMBank] ; 3092 + push af ; 3094 + ld a, $3 ; 3095 + rst Bankswitch ; 3097 + call Function5251 ; 3098 + pop bc ; 309b + ld a, b ; 309c + rst Bankswitch ; 309d + pop bc ; 309e + pop de ; 309f + pop hl ; 30a0 + ret ; 30a1 +; 30a2 + +Function30a2:: + push bc ; 30a2 + ldh a, [rDIV] ; 30a3 + ld b, a ; 30a5 + ldh a, [hRandomAdd] ; 30a6 + adc b ; 30a8 + ldh [hRandomAdd], a ; 30a9 + ldh a, [rDIV] ; 30ab + ld b, a ; 30ad + ldh a, [$ffe4] ; 30ae + sbc b ; 30b0 + ldh [$ffe4], a ; 30b1 + pop bc ; 30b3 + ret ; 30b4 +; 30b5 + +Function30b5:: + ldh a, [hROMBank] ; 30b5 + push af ; 30b7 + ld a, $f ; 30b8 + rst Bankswitch ; 30ba + call Function6c11 ; 30bb + ld [$cfdd], a ; 30be + pop af ; 30c1 + rst Bankswitch ; 30c2 + ld a, [$cfdd] ; 30c3 + ret ; 30c6 +; 30c7 + +RandomRange:: + push bc ; 30c7 + ld c, a ; 30c8 + xor a ; 30c9 + sub c ; 30ca + sub c ; 30cb + jr nc, Function30cb ; 30cc + add c ; 30ce + ld b, a ; 30cf + push bc ; 30d0 + call Function30a2 ; 30d1 + ldh a, [hRandomAdd] ; 30d4 + ld c, a ; 30d6 + add b ; 30d7 + jr c, Function30d1 ; 30d8 + ld a, c ; 30da + pop bc ; 30db + call Function31b5 ; 30dc + pop bc ; 30df + ret ; 30e0 +; 30e1 + +INCLUDE "home/sram.asm" + +Function30fc:: + jp [hl] ; 30fc + push de ; 30fd + ret ; 30fe +; 30ff + +Function30ff:: + ld hl, $c300 ; 30ff + ld b, $a0 ; 3102 + xor a ; 3104 + ld [hli], a ; 3105 + dec b ; 3106 + jr nz, Function3105 ; 3107 + ret ; 3109 +; 310a + +Function310a:: + ld hl, $c300 ; 310a + ld de, $4 ; 310d + ld b, $28 ; 3110 + ld a, $a0 ; 3112 + ld [hl], a ; 3114 + add hl, de ; 3115 + dec b ; 3116 + jr nz, Function3114 ; 3117 + ret ; 3119 +; 311a + +Function311a:: + inc b ; 311a + inc c ; 311b + jr Function3121 ; 311c +; 311e + +Function311e:: + ld a, [hli] ; 311e + ld [de], a ; 311f + inc de ; 3120 + dec c ; 3121 + jr nz, Function311e ; 3122 + dec b ; 3124 + jr nz, Function311e ; 3125 + ret ; 3127 +; 3128 + +Function3128:: + ld [$d156], a ; 3128 + ldh a, [hROMBank] ; 312b + push af ; 312d + ld a, [$d156] ; 312e + rst Bankswitch ; 3131 + ld a, [hl] ; 3132 + ld [$d156], a ; 3133 + pop af ; 3136 + rst Bankswitch ; 3137 + ld a, [$d156] ; 3138 + ret ; 313b +; 313c + +Function313c:: + ld [$d156], a ; 313c + ldh a, [hROMBank] ; 313f + push af ; 3141 + ld a, [$d156] ; 3142 + rst Bankswitch ; 3145 + ld a, [hli] ; 3146 + ld h, [hl] ; 3147 + ld l, a ; 3148 + pop af ; 3149 + rst Bankswitch ; 314a + ret ; 314b +; 314c + +Function314c:: + inc b ; 314c + inc c ; 314d + jr Function3151 ; 314e +; 3150 + +Function3150:: + ld [hli], a ; 3150 + dec c ; 3151 + jr nz, Function3150 ; 3152 + dec b ; 3154 + jr nz, Function3150 ; 3155 + ret ; 3157 +; 3158 + +Function3158:: + ld hl, $c3a0 ; 3158 + ld de, $c508 ; 315b + ld bc, $168 ; 315e + jp Function311a ; 3161 +; 3164 + +Function3164:: + xor a ; 3164 + ldh [$ffd6], a ; 3165 + call Function316f ; 3167 + ld a, $1 ; 316a + ldh [$ffd6], a ; 316c + ret ; 316e +; 316f + +Function316f:: + ld hl, $c508 ; 316f + ld de, $c3a0 ; 3172 + ld bc, $168 ; 3175 + jp Function311a ; 3178 +; 317b + +Function317b:: + ld hl, $cf7e ; 317b + ld a, [de] ; 317e + inc de ; 317f + ld [hli], a ; 3180 + cp $50 ; 3181 + jr nz, Function317e ; 3183 + ret ; 3185 +; 3186 + +Function3186:: + ld b, $0 ; 3186 + ld c, a ; 3188 + ld a, [hl] ; 3189 + cp $ff ; 318a + jr z, Function3195 ; 318c + cp c ; 318e + jr z, Function3197 ; 318f + inc b ; 3191 + add hl, de ; 3192 + jr Function3189 ; 3193 +; 3195 + +Function3195:: + and a ; 3195 + ret ; 3196 +; 3197 + +Function3197:: + scf ; 3197 + ret ; 3198 +; 3199 + +Function3199:: + ld bc, $b ; 3199 + and a ; 319c + ret z ; 319d + add hl, bc ; 319e + dec a ; 319f + jr nz, Function319e ; 31a0 + ret ; 31a2 +; 31a3 + +Function31a3:: + and a ; 31a3 + ret z ; 31a4 + add hl, bc ; 31a5 + dec a ; 31a6 + jr nz, Function31a5 ; 31a7 + ret ; 31a9 +; 31aa + +Function31aa:: + and a ; 31aa + ret z ; 31ab + push bc ; 31ac + ld b, a ; 31ad + xor a ; 31ae + add c ; 31af + dec b ; 31b0 + jr nz, Function31af ; 31b1 + pop bc ; 31b3 + ret ; 31b4 +; 31b5 + +Function31b5:: + ld b, $0 ; 31b5 + inc b ; 31b7 + sub c ; 31b8 + jr nc, Function31b7 ; 31b9 + dec b ; 31bb + add c ; 31bc + ret ; 31bd +; 31be + +Function31be:: + push hl ; 31be + push bc ; 31bf + ld hl, $67bd ; 31c0 + ld a, $1 ; 31c3 + rst FarCall ; 31c5 + pop bc ; 31c6 + pop hl ; 31c7 + ret ; 31c8 +; 31c9 + +Function31c9:: + push hl ; 31c9 + push de ; 31ca + push bc ; 31cb + ldh a, [hROMBank] ; 31cc + push af ; 31ce + ld a, $1 ; 31cf + rst Bankswitch ; 31d1 + call Function681d ; 31d2 + pop af ; 31d5 + rst Bankswitch ; 31d6 + pop bc ; 31d7 + pop de ; 31d8 + pop hl ; 31d9 + ret ; 31da +; 31db + +Function31db:: + sub b ; 31db + ret nc ; 31dc + cpl ; 31dd + add a, $1 ; 31de + scf ; 31e0 + ret ; 31e1 +; 31e2 + +Function31e2:: + ld a, [$d199] ; 31e2 + bit 4, a ; 31e5 + ret nz ; 31e7 + ld a, [$d19c] ; 31e8 + bit 1, a ; 31eb + ret z ; 31ed + push hl ; 31ee + push de ; 31ef + push bc ; 31f0 + ld hl, $ffda ; 31f1 + ld a, [hl] ; 31f4 + push af ; 31f5 + ld [hl], a ; 31f6 + ld a, [$d19c] ; 31f7 + bit 0, a ; 31fa + jr z, Function3205 ; 31fc + ld a, [$d199] ; 31fe + and $7 ; 3201 + jr Function3207 ; 3203 +; 3205 + +Function3205:: + ld a, $1 ; 3205 + ld [$cee9], a ; 3207 + call Function935 ; 320a + ld a, [$c1d6] ; 320d + and a ; 3210 + jr nz, Function3224 ; 3211 + ldh a, [$ffaa] ; 3213 + bit 0, a ; 3215 + jr z, Function321b ; 3217 + jr Function321f ; 3219 +; 321b + +Function321b:: + bit 1, a ; 321b + jr z, Function3224 ; 321d + call Function32e ; 321f + jr Function322a ; 3222 +; 3224 + +Function3224:: + ld a, [$cee9] ; 3224 + and a ; 3227 + jr nz, Function320a ; 3228 + pop af ; 322a + ldh [$ffda], a ; 322b + pop bc ; 322d + pop de ; 322e + pop hl ; 322f + ret ; 3230 +; 3231 + +Function3231:: + ld a, [hli] ; 3231 + ld [de], a ; 3232 + inc de ; 3233 + ld a, h ; 3234 + cp b ; 3235 + jr nz, Function3231 ; 3236 + ld a, l ; 3238 + cp c ; 3239 + jr nz, Function3231 ; 323a + ret ; 323c +; 323d + +Function323d:: + push bc ; 323d + bit 5, b ; 323e + jr z, Function324f ; 3240 + bit 7, b ; 3242 + jr nz, Function324a ; 3244 + bit 6, b ; 3246 + jr z, Function324f ; 3248 + ld a, $f0 ; 324a + ld [hli], a ; 324c + res 5, b ; 324d + xor a ; 324f + ldh [$ffb5], a ; 3250 + ldh [$ffb6], a ; 3252 + ldh [$ffb7], a ; 3254 + ld a, b ; 3256 + and $f ; 3257 + cp $1 ; 3259 + jr z, Function3277 ; 325b + cp $2 ; 325d + jr z, Function326e ; 325f + ld a, [de] ; 3261 + ldh [$ffb6], a ; 3262 + inc de ; 3264 + ld a, [de] ; 3265 + ldh [$ffb7], a ; 3266 + inc de ; 3268 + ld a, [de] ; 3269 + ldh [$ffb8], a ; 326a + jr Function327a ; 326c +; 326e + +Function326e:: + ld a, [de] ; 326e + ldh [$ffb7], a ; 326f + inc de ; 3271 + ld a, [de] ; 3272 + ldh [$ffb8], a ; 3273 + jr Function327a ; 3275 +; 3277 + +Function3277:: + ld a, [de] ; 3277 + ldh [$ffb8], a ; 3278 + push de ; 327a + ld d, b ; 327b + ld a, c ; 327c + swap a ; 327d + and $f ; 327f + ld e, a ; 3281 + ld a, c ; 3282 + and $f ; 3283 + ld b, a ; 3285 + ld c, $0 ; 3286 + cp $2 ; 3288 + jr z, Function32f2 ; 328a + cp $3 ; 328c + jr z, Function32e2 ; 328e + cp $4 ; 3290 + jr z, Function32d1 ; 3292 + cp $5 ; 3294 + jr z, Function32c0 ; 3296 + cp $6 ; 3298 + jr z, Function32ae ; 329a + ld a, $f ; 329c + ldh [$ffb9], a ; 329e + ld a, $42 ; 32a0 + ldh [$ffba], a ; 32a2 + ld a, $40 ; 32a4 + ldh [$ffbb], a ; 32a6 + call Function3341 ; 32a8 + call Function33c0 ; 32ab + ld a, $1 ; 32ae + ldh [$ffb9], a ; 32b0 + ld a, $86 ; 32b2 + ldh [$ffba], a ; 32b4 + ld a, $a0 ; 32b6 + ldh [$ffbb], a ; 32b8 + call Function3341 ; 32ba + call Function33c0 ; 32bd + xor a ; 32c0 + ldh [$ffb9], a ; 32c1 + ld a, $27 ; 32c3 + ldh [$ffba], a ; 32c5 + ld a, $10 ; 32c7 + ldh [$ffbb], a ; 32c9 + call Function3341 ; 32cb + call Function33c0 ; 32ce + xor a ; 32d1 + ldh [$ffb9], a ; 32d2 + ld a, $3 ; 32d4 + ldh [$ffba], a ; 32d6 + ld a, $e8 ; 32d8 + ldh [$ffbb], a ; 32da + call Function3341 ; 32dc + call Function33c0 ; 32df + xor a ; 32e2 + ldh [$ffb9], a ; 32e3 + xor a ; 32e5 + ldh [$ffba], a ; 32e6 + ld a, $64 ; 32e8 + ldh [$ffbb], a ; 32ea + call Function3341 ; 32ec + call Function33c0 ; 32ef + dec e ; 32f2 + jr nz, Function32f9 ; 32f3 + ld a, $f6 ; 32f5 + ldh [$ffb5], a ; 32f7 + ld c, $0 ; 32f9 + ldh a, [$ffb8] ; 32fb + cp $a ; 32fd + jr c, Function3306 ; 32ff + sub a, $a ; 3301 + inc c ; 3303 + jr Function32fd ; 3304 +; 3306 + +Function3306:: + ld b, a ; 3306 + ldh a, [$ffb5] ; 3307 + or c ; 3309 + jr nz, Function3311 ; 330a + call Function33ba ; 330c + jr Function3323 ; 330f +; 3311 + +Function3311:: + call Function3330 ; 3311 + push af ; 3314 + ld a, $f6 ; 3315 + add c ; 3317 + ld [hl], a ; 3318 + pop af ; 3319 + ldh [$ffb5], a ; 331a + inc e ; 331c + dec e ; 331d + jr nz, Function3323 ; 331e + inc hl ; 3320 + ld [hl], $e8 ; 3321 + call Function33c0 ; 3323 + call Function3330 ; 3326 + ld a, $f6 ; 3329 + add b ; 332b + ld [hli], a ; 332c + pop de ; 332d + pop bc ; 332e + ret ; 332f +; 3330 + +Function3330:: + push af ; 3330 + ldh a, [$ffb5] ; 3331 + and a ; 3333 + jr nz, Function333f ; 3334 + bit 5, d ; 3336 + jr z, Function333f ; 3338 + ld a, $f0 ; 333a + ld [hli], a ; 333c + res 5, d ; 333d + pop af ; 333f + ret ; 3340 +; 3341 + +Function3341:: + dec e ; 3341 + jr nz, Function3348 ; 3342 + ld a, $f6 ; 3344 + ldh [$ffb5], a ; 3346 + ld c, $0 ; 3348 + ldh a, [$ffb9] ; 334a + ld b, a ; 334c + ldh a, [$ffb6] ; 334d + ldh [$ffbc], a ; 334f + cp b ; 3351 + jr c, Function339a ; 3352 + sub b ; 3354 + ldh [$ffb6], a ; 3355 + ldh a, [$ffba] ; 3357 + ld b, a ; 3359 + ldh a, [$ffb7] ; 335a + ldh [$ffbd], a ; 335c + cp b ; 335e + jr nc, Function336c ; 335f + ldh a, [$ffb6] ; 3361 + or $0 ; 3363 + jr z, Function3396 ; 3365 + dec a ; 3367 + ldh [$ffb6], a ; 3368 + ldh a, [$ffb7] ; 336a + sub b ; 336c + ldh [$ffb7], a ; 336d + ldh a, [$ffbb] ; 336f + ld b, a ; 3371 + ldh a, [$ffb8] ; 3372 + ldh [$ffbe], a ; 3374 + cp b ; 3376 + jr nc, Function338c ; 3377 + ldh a, [$ffb7] ; 3379 + and a ; 337b + jr nz, Function3387 ; 337c + ldh a, [$ffb6] ; 337e + and a ; 3380 + jr z, Function3392 ; 3381 + dec a ; 3383 + ldh [$ffb6], a ; 3384 + xor a ; 3386 + dec a ; 3387 + ldh [$ffb7], a ; 3388 + ldh a, [$ffb8] ; 338a + sub b ; 338c + ldh [$ffb8], a ; 338d + inc c ; 338f + jr Function334a ; 3390 +; 3392 + +Function3392:: + ldh a, [$ffbd] ; 3392 + ldh [$ffb7], a ; 3394 + ldh a, [$ffbc] ; 3396 + ldh [$ffb6], a ; 3398 + ldh a, [$ffb5] ; 339a + or c ; 339c + jr z, Function33ba ; 339d + ldh a, [$ffb5] ; 339f + and a ; 33a1 + jr nz, Function33ad ; 33a2 + bit 5, d ; 33a4 + jr z, Function33ad ; 33a6 + ld a, $f0 ; 33a8 + ld [hli], a ; 33aa + res 5, d ; 33ab + ld a, $f6 ; 33ad + add c ; 33af + ld [hl], a ; 33b0 + ldh [$ffb5], a ; 33b1 + inc e ; 33b3 + dec e ; 33b4 + ret nz ; 33b5 + inc hl ; 33b6 + ld [hl], $e8 ; 33b7 + ret ; 33b9 +; 33ba + +Function33ba:: + bit 7, d ; 33ba + ret z ; 33bc + ld [hl], $f6 ; 33bd + ret ; 33bf +; 33c0 + +Function33c0:: + bit 7, d ; 33c0 + jr nz, Function33cc ; 33c2 + bit 6, d ; 33c4 + jr z, Function33cc ; 33c6 + ldh a, [$ffb5] ; 33c8 + and a ; 33ca + ret z ; 33cb + inc hl ; 33cc + ret ; 33cd +; 33ce + +Function33ce:: + push bc ; 33ce + call Function33d7 ; 33cf + pop bc ; 33d2 + dec c ; 33d3 + jr nz, Function33ce ; 33d4 + ret ; 33d6 +; 33d7 + +Function33d7:: + ld a, [de] ; 33d7 + swap a ; 33d8 + and $f ; 33da + call Function33e9 ; 33dc + ld [hli], a ; 33df + ld a, [de] ; 33e0 + and $f ; 33e1 + call Function33e9 ; 33e3 + ld [hli], a ; 33e6 + inc de ; 33e7 + ret ; 33e8 +; 33e9 + +Function33e9:: + ld bc, $33f4 ; 33e9 + add c ; 33ec + ld c, a ; 33ed + ld a, $0 ; 33ee + adc b ; 33f0 + ld b, a ; 33f1 + ld a, [bc] ; 33f2 + ret ; 33f3 +; 33f4 + +Function33f4:: + or $f7 ; 33f4 + ld hl, [sp+$f9] ; 33f6 + ld a, [$fcfb] ; 33f8 + - ; 33fb + cp $ff ; 33fc + add b ; 33fe + add c ; 33ff + add d ; 3400 + add e ; 3401 + add h ; 3402 + add l ; 3403 + ld [$d156], a ; 3404 + ldh a, [hROMBank] ; 3407 + push af ; 3409 + ld a, [$d156] ; 340a + rst Bankswitch ; 340d + call Functionf5e ; 340e + pop af ; 3411 + rst Bankswitch ; 3412 + ret ; 3413 +; 3414 + +Function3414:: + ldh a, [hROMBank] ; 3414 + push af ; 3416 + ld a, [hli] ; 3417 + rst Bankswitch ; 3418 + ld a, [hli] ; 3419 + ld h, [hl] ; 341a + ld l, a ; 341b + call Function30fc ; 341c + pop hl ; 341f + ld a, h ; 3420 + rst Bankswitch ; 3421 + ret ; 3422 +; 3423 + +Function3423:: + ldh a, [hROMBank] ; 3423 + ld [$cfd8], a ; 3425 + ld a, l ; 3428 + ld [$cfd9], a ; 3429 + ld a, h ; 342c + ld [$cfda], a ; 342d + ret ; 3430 +; 3431 + +Function3431:: + ld a, [de] ; 3431 + cp [hl] ; 3432 + ret nz ; 3433 + inc de ; 3434 + inc hl ; 3435 + dec c ; 3436 + jr nz, Function3431 ; 3437 + ret ; 3439 +; 343a + +Function343a:: + ld a, [de] ; 343a + cp [hl] ; 343b + jr nz, Function3447 ; 343c + inc de ; 343e + inc hl ; 343f + dec bc ; 3440 + ld a, b ; 3441 + or c ; 3442 + jr nz, Function343a ; 3443 + scf ; 3445 + ret ; 3446 +; 3447 + +Function3447:: + and a ; 3447 + ret ; 3448 +; 3449 + +Function3449:: + call Function3564 ; 3449 +WaitBGMap:: + ld a, $1 ; 344c + ldh [$ffd6], a ; 344e + ld c, $4 ; 3450 + call Function33c ; 3452 + ret ; 3455 +; 3456 + +Function3456:: + ldh a, [$ffe8] ; 3456 + and a ; 3458 + jr z, Function3464 ; 3459 + ld a, $2 ; 345b + ldh [$ffd6], a ; 345d + ld c, $4 ; 345f + call Function33c ; 3461 + ld a, $1 ; 3464 + ldh [$ffd6], a ; 3466 + ld c, $4 ; 3468 + call Function33c ; 346a + ret ; 346d +; 346e + +Function346e:: + ldh a, [$ffe8] ; 346e + and a ; 3470 + ret ; 3471 +; 3472 + +Function3472:: + ldh a, [$ffe8] ; 3472 + and a ; 3474 + jr z, Function3484 ; 3475 + ld a, [$c1cd] ; 3477 + cp $0 ; 347a + jr z, Function3484 ; 347c + ld a, $1 ; 347e + ldh [$ffd6], a ; 3480 + jr Function3493 ; 3482 +; 3484 + +Function3484:: + ld a, $1 ; 3484 + ldh [$ffd6], a ; 3486 + ld c, $4 ; 3488 + call Function33c ; 348a + ret ; 348d +; 348e + +Function348e:: + ldh a, [$ffe8] ; 348e + and a ; 3490 + jr z, Function344c ; 3491 + ldh a, [$ffd6] ; 3493 + push af ; 3495 + xor a ; 3496 + ldh [$ffd6], a ; 3497 + ldh a, [$ffe0] ; 3499 + push af ; 349b + xor a ; 349c + ldh [$ffe0], a ; 349d + ldh a, [$ff44] ; 349f + cp $7f ; 34a1 + jr c, Function349f ; 34a3 + di ; 34a5 + ld a, $1 ; 34a6 + ldh [$ff4f], a ; 34a8 + ld hl, $ccd9 ; 34aa + call Function34c8 ; 34ad + ld a, $0 ; 34b0 + ldh [$ff4f], a ; 34b2 + ld hl, $c3a0 ; 34b4 + call Function34c8 ; 34b7 + ldh a, [$ff44] ; 34ba + cp $7f ; 34bc + jr c, Function34ba ; 34be + ei ; 34c0 + pop af ; 34c1 + ldh [$ffe0], a ; 34c2 + pop af ; 34c4 + ldh [$ffd6], a ; 34c5 + ret ; 34c7 +; 34c8 + +Function34c8:: + ld [$ffdb], sp ; 34c8 + ld sp, hl ; 34cb + ldh a, [$ffd9] ; 34cc + ld h, a ; 34ce + ld l, $0 ; 34cf + ld a, $12 ; 34d1 + ldh [$ffd5], a ; 34d3 + ld b, $2 ; 34d5 + ld c, $41 ; 34d7 + pop de ; 34d9 + ld a, [$ff00+c] ; 34da + and b ; 34db + jr nz, Function34da ; 34dc + ld [hl], e ; 34de + inc l ; 34df + ld [hl], d ; 34e0 + inc l ; 34e1 + pop de ; 34e2 + ld a, [$ff00+c] ; 34e3 + and b ; 34e4 + jr nz, Function34e3 ; 34e5 + ld [hl], e ; 34e7 + inc l ; 34e8 + ld [hl], d ; 34e9 + inc l ; 34ea + pop de ; 34eb + ld a, [$ff00+c] ; 34ec + and b ; 34ed + jr nz, Function34ec ; 34ee + ld [hl], e ; 34f0 + inc l ; 34f1 + ld [hl], d ; 34f2 + inc l ; 34f3 + pop de ; 34f4 + ld a, [$ff00+c] ; 34f5 + and b ; 34f6 + jr nz, Function34f5 ; 34f7 + ld [hl], e ; 34f9 + inc l ; 34fa + ld [hl], d ; 34fb + inc l ; 34fc + pop de ; 34fd + ld a, [$ff00+c] ; 34fe + and b ; 34ff + jr nz, Function34fe ; 3500 + ld [hl], e ; 3502 + inc l ; 3503 + ld [hl], d ; 3504 + inc l ; 3505 + pop de ; 3506 + ld a, [$ff00+c] ; 3507 + and b ; 3508 + jr nz, Function3507 ; 3509 + ld [hl], e ; 350b + inc l ; 350c + ld [hl], d ; 350d + inc l ; 350e + pop de ; 350f + ld a, [$ff00+c] ; 3510 + and b ; 3511 + jr nz, Function3510 ; 3512 + ld [hl], e ; 3514 + inc l ; 3515 + ld [hl], d ; 3516 + inc l ; 3517 + pop de ; 3518 + ld a, [$ff00+c] ; 3519 + and b ; 351a + jr nz, Function3519 ; 351b + ld [hl], e ; 351d + inc l ; 351e + ld [hl], d ; 351f + inc l ; 3520 + pop de ; 3521 + ld a, [$ff00+c] ; 3522 + and b ; 3523 + jr nz, Function3522 ; 3524 + ld [hl], e ; 3526 + inc l ; 3527 + ld [hl], d ; 3528 + inc l ; 3529 + pop de ; 352a + ld a, [$ff00+c] ; 352b + and b ; 352c + jr nz, Function352b ; 352d + ld [hl], e ; 352f + inc l ; 3530 + ld [hl], d ; 3531 + inc l ; 3532 + ld de, $c ; 3533 + add hl, de ; 3536 + ldh a, [$ffd5] ; 3537 + dec a ; 3539 + ldh [$ffd5], a ; 353a + jr nz, Function34d9 ; 353c + ldh a, [$ffdb] ; 353e + ld l, a ; 3540 + ldh a, [$ffdc] ; 3541 + ld h, a ; 3543 + ld sp, hl ; 3544 + ret ; 3545 +; 3546 + +Function3546:: + ldh a, [$ffe8] ; 3546 + and a ; 3548 + jr nz, Function3556 ; 3549 + ld a, $e4 ; 354b + ldh [$ff47], a ; 354d + ld a, $d0 ; 354f + ldh [$ff48], a ; 3551 + ldh [$ff49], a ; 3553 + ret ; 3555 +; 3556 + +Function3556:: + push de ; 3556 + ld a, $e4 ; 3557 + call Functionc61 ; 3559 + ld de, $e4e4 ; 355c + call Functionc83 ; 355f + pop de ; 3562 + ret ; 3563 +; 3564 + +Function3564:: + ldh a, [$ffe8] ; 3564 + and a ; 3566 + jr nz, Function3571 ; 3567 + xor a ; 3569 + ldh [$ff47], a ; 356a + ldh [$ff48], a ; 356c + ldh [$ff49], a ; 356e + ret ; 3570 +; 3571 + +Function3571:: + ld hl, $c280 ; 3571 + ld bc, $80 ; 3574 + ld a, $ff ; 3577 + call Function314c ; 3579 + ld a, $1 ; 357c + ldh [$ffe7], a ; 357e + ret ; 3580 +; 3581 + +Function3581:: + ld b, $ff ; 3581 + ldh a, [$ffe8] ; 3583 + and a ; 3585 + jr nz, Function358c ; 3586 + ldh a, [$ffe9] ; 3588 + and a ; 358a + ret z ; 358b + ld a, $31 ; 358c + jp Function2e49 ; 358e +; 3591 + +Function3591:: + call Function3596 ; 3591 + ld [hl], d ; 3594 + ret ; 3595 +; 3596 + +Function3596:: + ld d, $0 ; 3596 + ld a, e ; 3598 + cp $18 ; 3599 + ret nc ; 359b + inc d ; 359c + cp $a ; 359d + ret nc ; 359f + inc d ; 35a0 + ret ; 35a1 +; 35a2 + +Function35a2:: + ld c, $0 ; 35a2 + ld a, [hli] ; 35a4 + ld e, a ; 35a5 + ld d, $8 ; 35a6 + srl e ; 35a8 + ld a, $0 ; 35aa + adc c ; 35ac + ld c, a ; 35ad + dec d ; 35ae + jr nz, Function35a8 ; 35af + dec b ; 35b1 + jr nz, Function35a4 ; 35b2 + ld a, c ; 35b4 + ld [$d151], a ; 35b5 + ret ; 35b8 +; 35b9 + +Function35b9:: + ld a, [$d1f2] ; 35b9 + sub a, $7 ; 35bc + jr nc, Function35bc ; 35be + add a, $7 ; 35c0 + ret ; 35c2 +; 35c3 + +Function35c3:: + push af ; 35c3 + ld c, a ; 35c4 + ld hl, $dbe4 ; 35c5 + ld b, $1 ; 35c8 + call Function35e4 ; 35ca + pop af ; 35cd + ld c, a ; 35ce + ld hl, $dc04 ; 35cf + ld b, $1 ; 35d2 + jr Function35e4 ; 35d4 +; 35d6 + +Function35d6:: + ld c, a ; 35d6 + ld hl, $dbe4 ; 35d7 + ld b, $2 ; 35da + jr Function35e4 ; 35dc +; 35de + +Function35de:: + ld c, a ; 35de + ld hl, $dc04 ; 35df + ld b, $2 ; 35e2 + ld d, $0 ; 35e4 + ld a, $3 ; 35e6 + call Function2e49 ; 35e8 + ld a, c ; 35eb + and a ; 35ec + ret ; 35ed +; 35ee + +Function35ee:: + ld l, h ; 35ee + ld [hl], h ; 35ef + ld c, e ; 35f0 + ld l, h ; 35f1 + ld [hl], h ; 35f2 + ld d, l ; 35f3 + nop ; 35f4 + nop ; 35f5 + nop ; 35f6 + ld l, h ; 35f7 + nop ; 35f8 + ld b, b ; 35f9 + nop ; 35fa + ld c, d ; 35fb + - ; 35fc + nop ; 35fd + ld a, l ; 35fe + sbc a, $6c ; 35ff + ld d, l ; 3601 + ld c, c ; 3602 + inc b ; 3603 + nop ; 3604 + ld b, b ; 3605 + ldh a, [hROMBank] ; 3606 + push af ; 3608 + push hl ; 3609 + push bc ; 360a + push de ; 360b + ld a, [$ce61] ; 360c + cp $1 ; 360f + jr nz, Function3624 ; 3611 + ld a, [$ce60] ; 3613 + ld [$d151], a ; 3616 + call Function367e ; 3619 + ld hl, $b ; 361c + add hl, de ; 361f + ld e, l ; 3620 + ld d, h ; 3621 + jr Function3646 ; 3622 +; 3624 + +Function3624:: + ld a, [$ce61] ; 3624 + dec a ; 3627 + ld e, a ; 3628 + ld d, $0 ; 3629 + ld hl, $35ee ; 362b + add hl, de ; 362e + add hl, de ; 362f + add hl, de ; 3630 + ld a, [hli] ; 3631 + rst Bankswitch ; 3632 + ld a, [hli] ; 3633 + ld h, [hl] ; 3634 + ld l, a ; 3635 + ld a, [$ce60] ; 3636 + dec a ; 3639 + call Function3654 ; 363a + ld de, $cf6b ; 363d + ld bc, $d ; 3640 + call Function311a ; 3643 + ld a, e ; 3646 + ld [$cffe], a ; 3647 + ld a, d ; 364a + ld [$cfff], a ; 364b + pop de ; 364e + pop bc ; 364f + pop hl ; 3650 + pop af ; 3651 + rst Bankswitch ; 3652 + ret ; 3653 +; 3654 + +Function3654:: + and a ; 3654 + ret z ; 3655 + push bc ; 3656 + ld b, a ; 3657 + ld c, $50 ; 3658 + ld a, [hli] ; 365a + cp c ; 365b + jr nz, Function365a ; 365c + dec b ; 365e + jr nz, Function365a ; 365f + pop bc ; 3661 + ret ; 3662 +; 3663 + +Function3663:: + push hl ; 3663 + call Function367e ; 3664 + ld hl, $cf6b ; 3667 + ld a, [hl] ; 366a + cp $50 ; 366b + jr z, Function367c ; 366d + cp $ef ; 366f + jr z, Function367a ; 3671 + cp $f5 ; 3673 + jr z, Function367a ; 3675 + inc hl ; 3677 + jr Function366a ; 3678 +; 367a + +Function367a:: + ld [hl], $50 ; 367a + pop hl ; 367c + ret ; 367d +; 367e + +Function367e:: + ldh a, [hROMBank] ; 367e + push af ; 3680 + push hl ; 3681 + ld a, $6c ; 3682 + rst Bankswitch ; 3684 + ld a, [$d151] ; 3685 + dec a ; 3688 + ld hl, $4b74 ; 3689 + ld e, a ; 368c + ld d, $0 ; 368d + add hl, de ; 368f + add hl, de ; 3690 + add hl, de ; 3691 + add hl, de ; 3692 + add hl, de ; 3693 + add hl, de ; 3694 + add hl, de ; 3695 + add hl, de ; 3696 + add hl, de ; 3697 + add hl, de ; 3698 + ld de, $cf6b ; 3699 + push de ; 369c + ld bc, $a ; 369d + call Function311a ; 36a0 + ld hl, $cf75 ; 36a3 + ld [hl], $50 ; 36a6 + pop de ; 36a8 + pop hl ; 36a9 + pop af ; 36aa + rst Bankswitch ; 36ab + ret ; 36ac +; 36ad + +Function36ad:: + push hl ; 36ad + push bc ; 36ae + ld a, [$d151] ; 36af + cp $bf ; 36b2 + jr nc, Function36c3 ; 36b4 + ld [$ce60], a ; 36b6 + ld a, $4 ; 36b9 + ld [$ce61], a ; 36bb + call Function3606 ; 36be + jr Function36c6 ; 36c1 +; 36c3 + +Function36c3:: + call Function36cc ; 36c3 + ld de, $cf6b ; 36c6 + pop bc ; 36c9 + pop hl ; 36ca + ret ; 36cb +; 36cc + +Function36cc:: + push hl ; 36cc + push de ; 36cd + push bc ; 36ce + ld a, [$d151] ; 36cf + push af ; 36d2 + cp $f3 ; 36d3 + push af ; 36d5 + jr c, Function36e0 ; 36d6 + ld hl, $3721 ; 36d8 + ld bc, $2 ; 36db + jr Function36e6 ; 36de +; 36e0 + +Function36e0:: + ld hl, $371e ; 36e0 + ld bc, $2 ; 36e3 + ld de, $cf6b ; 36e6 + call Function311a ; 36e9 + push de ; 36ec + ld a, [$d151] ; 36ed + ld c, a ; 36f0 + ld hl, $5414 ; 36f1 + ld a, $3 ; 36f4 + rst FarCall ; 36f6 + pop de ; 36f7 + pop af ; 36f8 + ld a, c ; 36f9 + jr c, Function36fe ; 36fa + sub a, $32 ; 36fc + ld b, $f6 ; 36fe + sub a, $a ; 3700 + jr c, Function3707 ; 3702 + inc b ; 3704 + jr Function3700 ; 3705 +; 3707 + +Function3707:: + add a, $a ; 3707 + push af ; 3709 + ld a, b ; 370a + ld [de], a ; 370b + inc de ; 370c + pop af ; 370d + ld b, $f6 ; 370e + add b ; 3710 + ld [de], a ; 3711 + inc de ; 3712 + ld a, $50 ; 3713 + ld [de], a ; 3715 + pop af ; 3716 + ld [$d151], a ; 3717 + pop bc ; 371a + pop de ; 371b + pop hl ; 371c + ret ; 371d +; 371e + +Function371e:: + sub e ; 371e + adc h ; 371f + ld d, b ; 3720 + add a ; 3721 + adc h ; 3722 + ld d, b ; 3723 + cp $f3 ; 3724 + jr c, Function372a ; 3726 + scf ; 3728 + ret ; 3729 +; 372a + +Function372a:: + and a ; 372a + ret ; 372b +; 372c + +Function372c:: + ld hl, $3735 ; 372c + ld de, $1 ; 372f + jp Function3186 ; 3732 +; 3735 + +Function3735:: + rrca ; 3735 + inc de ; 3736 + add hl, sp ; 3737 + ld b, [hl] ; 3738 + sub h ; 3739 + ld a, a ; 373a + ld a, [$e5ff] ; 373b + ld a, $2 ; 373e + ld [$ce61], a ; 3740 + ld a, [$d151] ; 3743 + ld [$ce60], a ; 3746 + call Function3606 ; 3749 + ld de, $cf6b ; 374c + pop hl ; 374f + ret ; 3750 +; 3751 + +Function3751:: + call Function1af9 ; 3751 + ldh a, [hROMBank] ; 3754 + push af ; 3756 + ld a, $9 ; 3757 + rst Bankswitch ; 3759 + call Function44d7 ; 375a + call Function3769 ; 375d + call Function44f3 ; 3760 + pop af ; 3763 + rst Bankswitch ; 3764 + ld a, [$ceaa] ; 3765 + ret ; 3768 +; 3769 + +Function3769:: + ld hl, $cfe5 ; 3769 + bit 0, [hl] ; 376c + jp nz, Function359 ; 376e + jp Function3546 ; 3771 +; 3774 + +Function3774:: + ld a, [$ceb9] ; 3774 + dec a ; 3777 + ld b, a ; 3778 + ld a, [$cebb] ; 3779 + sub b ; 377c + ld d, a ; 377d + ld a, [$ceba] ; 377e + dec a ; 3781 + ld c, a ; 3782 + ld a, [$cebc] ; 3783 + sub c ; 3786 + ld e, a ; 3787 + push de ; 3788 + call Function1b98 ; 3789 + pop bc ; 378c + jp Functioneef ; 378d +; 3790 + +Function3790:: + call Function32e ; 3790 + ldh a, [$ffac] ; 3793 + push af ; 3795 + ld a, $1 ; 3796 + ldh [$ffac], a ; 3798 + call Functiona08 ; 379a + pop af ; 379d + ldh [$ffac], a ; 379e + ldh a, [$ffab] ; 37a0 + and $f0 ; 37a2 + ld c, a ; 37a4 + ldh a, [$ffa9] ; 37a5 + and $f ; 37a7 + or c ; 37a9 + ld c, a ; 37aa + ret ; 37ab +; 37ac + +Function37ac:: + ldh a, [hROMBank] ; 37ac + push af ; 37ae + call Function2d2b ; 37af + call Function37b9 ; 37b2 + pop bc ; 37b5 + ld a, b ; 37b6 + rst Bankswitch ; 37b7 + ret ; 37b8 +; 37b9 + +Function37b9:: + ld hl, $1 ; 37b9 + add hl, de ; 37bc + ld a, [hl] ; 37bd + cp $ff ; 37be + jr z, Function37dc ; 37c0 + ld l, a ; 37c2 + push hl ; 37c3 + call Function37de ; 37c4 + pop hl ; 37c7 + jr nc, Function37dc ; 37c8 + ld d, a ; 37ca + ld e, l ; 37cb + call Function3823 ; 37cc + jr nc, Function37dc ; 37cf + call Function275a ; 37d1 + ld a, $25 ; 37d4 + ld hl, $6b89 ; 37d6 + rst FarCall ; 37d9 + scf ; 37da + ret ; 37db +; 37dc + +Function37dc:: + and a ; 37dc + ret ; 37dd +; 37de + +Function37de:: + push de ; 37de + ld hl, $10 ; 37df + add hl, de ; 37e2 + ld a, [hl] ; 37e3 + ld hl, $11 ; 37e4 + add hl, de ; 37e7 + ld e, [hl] ; 37e8 + sub a, $4 ; 37e9 + ld d, a ; 37eb + ld a, e ; 37ec + sub a, $4 ; 37ed + ld e, a ; 37ef + call Function37f5 ; 37f0 + pop de ; 37f3 + ret ; 37f4 +; 37f5 + +Function37f5:: + ld hl, $d946 ; 37f5 + ld a, [hli] ; 37f8 + ld h, [hl] ; 37f9 + ld l, a ; 37fa + ld a, [$d945] ; 37fb + and a ; 37fe + jr z, Function3818 ; 37ff + push af ; 3801 + ld a, [hl] ; 3802 + cp e ; 3803 + jr nz, Function380d ; 3804 + inc hl ; 3806 + ld a, [hld] ; 3807 + cp d ; 3808 + jr nz, Function380d ; 3809 + jr Function381a ; 380b +; 380d + +Function380d:: + ld a, $5 ; 380d + add l ; 380f + ld l, a ; 3810 + jr nc, Function3814 ; 3811 + inc h ; 3813 + pop af ; 3814 + dec a ; 3815 + jr nz, Function3801 ; 3816 + and a ; 3818 + ret ; 3819 +; 381a + +Function381a:: + pop af ; 381a + ld d, a ; 381b + ld a, [$d945] ; 381c + sub d ; 381f + inc a ; 3820 + scf ; 3821 + ret ; 3822 +; 3823 + +Function3823:: + ld hl, $1 ; 3823 + add hl, bc ; 3826 + ld a, [hli] ; 3827 + ld h, [hl] ; 3828 + ld l, a ; 3829 + ld a, [hli] ; 382a + cp $ff ; 382b + jr z, Function3840 ; 382d + cp d ; 382f + jr nz, Function383b ; 3830 + ld a, [hli] ; 3832 + cp e ; 3833 + jr nz, Function383c ; 3834 + ld a, [hli] ; 3836 + ld h, [hl] ; 3837 + ld l, a ; 3838 + jr Function3842 ; 3839 +; 383b + +Function383b:: + inc hl ; 383b + inc hl ; 383c + inc hl ; 383d + jr Function382a ; 383e +; 3840 + +Function3840:: + and a ; 3840 + ret ; 3841 +; 3842 + +Function3842:: + scf ; 3842 + ret ; 3843 +; 3844 + +Function3844:: + ldh a, [hROMBank] ; 3844 + push af ; 3846 + call Function2d2b ; 3847 + call Function3851 ; 384a + pop bc ; 384d + ld a, b ; 384e + rst Bankswitch ; 384f + ret ; 3850 +; 3851 + +Function3851:: + ld a, $2 ; 3851 + ld de, $d465 ; 3853 + push af ; 3856 + push de ; 3857 + ld hl, $1 ; 3858 + add hl, de ; 385b + ld a, [hl] ; 385c + and a ; 385d + jr z, Function389b ; 385e + ld hl, $8 ; 3860 + add hl, de ; 3863 + ld a, [hl] ; 3864 + and $f ; 3865 + cp $2 ; 3867 + jr nz, Function389b ; 3869 + ld hl, $0 ; 386b + add hl, de ; 386e + ld a, [hl] ; 386f + cp $ff ; 3870 + jr z, Function389b ; 3872 + call Function1982 ; 3874 + call Function38e9 ; 3877 + jr nc, Function389b ; 387a + ld hl, $9 ; 387c + add hl, de ; 387f + ld a, [hl] ; 3880 + cp b ; 3881 + jr c, Function389b ; 3882 + push bc ; 3884 + push de ; 3885 + ld hl, $a ; 3886 + add hl, de ; 3889 + ld a, [hli] ; 388a + ld h, [hl] ; 388b + ld l, a ; 388c + ld e, [hl] ; 388d + inc hl ; 388e + ld d, [hl] ; 388f + ld b, $2 ; 3890 + call Function2f2f ; 3892 + ld a, c ; 3895 + pop de ; 3896 + pop bc ; 3897 + and a ; 3898 + jr z, Function38aa ; 3899 + pop de ; 389b + ld hl, $10 ; 389c + add hl, de ; 389f + ld d, h ; 38a0 + ld e, l ; 38a1 + pop af ; 38a2 + inc a ; 38a3 + cp $10 ; 38a4 + jr nz, Function3856 ; 38a6 + xor a ; 38a8 + ret ; 38a9 +; 38aa + +Function38aa:: + pop de ; 38aa + pop af ; 38ab + ldh [$ffe2], a ; 38ac + ld a, b ; 38ae + ld [$cf2a], a ; 38af + ld a, c ; 38b2 + ld [$cf2b], a ; 38b3 + jr Function38c2 ; 38b6 +; 38b8 + +Function38b8:: + ld a, $1 ; 38b8 + ld [$cf2a], a ; 38ba + ld a, $ff ; 38bd + ld [$cf2b], a ; 38bf + call Function2d30 ; 38c2 + ld [$cf29], a ; 38c5 + ldh a, [$ffe2] ; 38c8 + call Function176f ; 38ca + ld hl, $a ; 38cd + add hl, bc ; 38d0 + ld a, [$cf29] ; 38d1 + call Function313c ; 38d4 + ld de, $cf2c ; 38d7 + ld bc, $d ; 38da + ld a, [$cf29] ; 38dd + call Functiondcd ; 38e0 + xor a ; 38e3 + ld [$cf38], a ; 38e4 + scf ; 38e7 + ret ; 38e8 +; 38e9 + +Function38e9:: + push de ; 38e9 + call Function38f1 ; 38ea + ld b, d ; 38ed + ld c, e ; 38ee + pop de ; 38ef + ret ; 38f0 +; 38f1 + +Function38f1:: + ld hl, $10 ; 38f1 + add hl, bc ; 38f4 + ld d, [hl] ; 38f5 + ld hl, $11 ; 38f6 + add hl, bc ; 38f9 + ld e, [hl] ; 38fa + ld a, [$d20d] ; 38fb + cp d ; 38fe + jr z, Function3909 ; 38ff + ld a, [$d20e] ; 3901 + cp e ; 3904 + jr z, Function391d ; 3905 + and a ; 3907 + ret ; 3908 +; 3909 + +Function3909:: + ld a, [$d20e] ; 3909 + sub e ; 390c + jr z, Function3937 ; 390d + jr nc, Function3918 ; 390f + cpl ; 3911 + inc a ; 3912 + ld d, a ; 3913 + ld e, $4 ; 3914 + jr Function392f ; 3916 +; 3918 + +Function3918:: + ld d, a ; 3918 + ld e, $0 ; 3919 + jr Function392f ; 391b +; 391d + +Function391d:: + ld a, [$d20d] ; 391d + sub d ; 3920 + jr z, Function3937 ; 3921 + jr nc, Function392c ; 3923 + cpl ; 3925 + inc a ; 3926 + ld d, a ; 3927 + ld e, $8 ; 3928 + jr Function392f ; 392a +; 392c + +Function392c:: + ld d, a ; 392c + ld e, $c ; 392d + call Function19a4 ; 392f + cp e ; 3932 + jr nz, Function3937 ; 3933 + scf ; 3935 + ret ; 3936 +; 3937 + +Function3937:: + and a ; 3937 + ret ; 3938 +; 3939 + +Function3939:: + push bc ; 3939 + ld hl, $1 ; 393a + add hl, bc ; 393d + ld a, [hl] ; 393e + call Function176f ; 393f + ld hl, $a ; 3942 + add hl, bc ; 3945 + ld a, [hli] ; 3946 + ld h, [hl] ; 3947 + ld l, a ; 3948 + call Function2d30 ; 3949 + call Function313c ; 394c + ld d, h ; 394f + ld e, l ; 3950 + push de ; 3951 + ld b, $2 ; 3952 + call Function2f2f ; 3954 + pop de ; 3957 + ld a, c ; 3958 + and a ; 3959 + pop bc ; 395a + ret ; 395b +; 395c + +Function395c:: + ld a, [$d119] ; 395c + cp $1 ; 395f + jr Function3968 ; 3961 +; 3963 + +Function3963:: + ld hl, $cf32 ; 3963 + jr Function3974 ; 3966 +; 3968 + +Function3968:: + ld a, [$cfe9] ; 3968 + ld hl, $cf32 ; 396b + and a ; 396e + jr z, Function3974 ; 396f + ld hl, $cf34 ; 3971 + ld a, [hli] ; 3974 + ld h, [hl] ; 3975 + ld l, a ; 3976 + call Function2d30 ; 3977 + call Function3404 ; 397a + call WaitBGMap ; 397d + call Functiona31 ; 3980 + ret ; 3983 +; 3984 + +Function3984:: + push hl ; 3984 + push de ; 3985 + push bc ; 3986 + ld a, $60 ; 3987 + ld [hli], a ; 3989 + ld a, $61 ; 398a + ld [hli], a ; 398c + push hl ; 398d + ld a, $62 ; 398e + ld [hli], a ; 3990 + dec d ; 3991 + jr nz, Function3990 ; 3992 + ld a, $6b ; 3994 + add b ; 3996 + ld [hl], a ; 3997 + pop hl ; 3998 + ld a, e ; 3999 + and a ; 399a + jr nz, Function39a3 ; 399b + ld a, c ; 399d + and a ; 399e + jr z, Function39b6 ; 399f + ld e, $1 ; 39a1 + ld a, e ; 39a3 + sub a, $8 ; 39a4 + jr c, Function39b2 ; 39a6 + ld e, a ; 39a8 + ld a, $6a ; 39a9 + ld [hli], a ; 39ab + ld a, e ; 39ac + and a ; 39ad + jr z, Function39b6 ; 39ae + jr Function39a3 ; 39b0 +; 39b2 + +Function39b2:: + ld a, $62 ; 39b2 + add e ; 39b4 + ld [hl], a ; 39b5 + pop bc ; 39b6 + pop de ; 39b7 + pop hl ; 39b8 + ret ; 39b9 +; 39ba + +Function39ba:: + ld a, $1 ; 39ba + ld [$cf3b], a ; 39bc + ld a, [$d004] ; 39bf + and a ; 39c2 + jr z, Function39e7 ; 39c3 + cp $fd ; 39c5 + jr z, Function39cd ; 39c7 + cp $fc ; 39c9 + jr nc, Function39e7 ; 39cb + push hl ; 39cd + ld de, $9000 ; 39ce + ld a, $3c ; 39d1 + call Function2e49 ; 39d3 + pop hl ; 39d6 + xor a ; 39d7 + ldh [$ffaf], a ; 39d8 + ld bc, $707 ; 39da + ld a, $13 ; 39dd + call Function2e49 ; 39df + xor a ; 39e2 + ld [$cf3b], a ; 39e3 + ret ; 39e6 +; 39e7 + +Function39e7:: + xor a ; 39e7 + ld [$cf3b], a ; 39e8 + inc a ; 39eb + ld [$d004], a ; 39ec + ret ; 39ef +; 39f0 + +Function39f0:: + push af ; 39f0 + ld a, $1 ; 39f1 + ld [$c1bc], a ; 39f3 + pop af ; 39f6 + jr Function3a02 ; 39f7 +; 39f9 + +Function39f9:: + push af ; 39f9 + xor a ; 39fa + ld [$c1bc], a ; 39fb + ld [$c1bd], a ; 39fe + pop af ; 3a01 + push hl ; 3a02 + push de ; 3a03 + push bc ; 3a04 + call Function3a41 ; 3a05 + jr c, Function3a12 ; 3a08 + ld e, c ; 3a0a + ld d, b ; 3a0b + call Function3de4 ; 3a0c + call Function3e56 ; 3a0f + pop bc ; 3a12 + pop de ; 3a13 + pop hl ; 3a14 + ret ; 3a15 +; 3a16 + +Function3a16:: + call Function3a41 ; 3a16 + ret c ; 3a19 + ldh a, [hROMBank] ; 3a1a + push af ; 3a1c + ld a, $3c ; 3a1d + rst Bankswitch ; 3a1f + ld hl, $6747 ; 3a20 + add hl, bc ; 3a23 + add hl, bc ; 3a24 + add hl, bc ; 3a25 + add hl, bc ; 3a26 + add hl, bc ; 3a27 + add hl, bc ; 3a28 + ld e, [hl] ; 3a29 + inc hl ; 3a2a + ld d, [hl] ; 3a2b + inc hl ; 3a2c + ld a, [hli] ; 3a2d + ld [$c1b0], a ; 3a2e + ld a, [hli] ; 3a31 + ld [$c1b1], a ; 3a32 + ld a, [hli] ; 3a35 + ld [$c1b2], a ; 3a36 + ld a, [hl] ; 3a39 + ld [$c1b3], a ; 3a3a + pop af ; 3a3d + rst Bankswitch ; 3a3e + and a ; 3a3f + ret ; 3a40 +; 3a41 + +Function3a41:: + and a ; 3a41 + jr z, Function3a4e ; 3a42 + cp $fc ; 3a44 + jr nc, Function3a4e ; 3a46 + dec a ; 3a48 + ld c, a ; 3a49 + ld b, $0 ; 3a4a + and a ; 3a4c + ret ; 3a4d +; 3a4e + +Function3a4e:: + scf ; 3a4e + ret ; 3a4f +; 3a50 + +Function3a50:: + ld a, [$d02a] ; 3a50 + ld [hl], $6e ; 3a53 + inc hl ; 3a55 + ld c, $2 ; 3a56 + cp $64 ; 3a58 + jr c, Function3a65 ; 3a5a + dec hl ; 3a5c + inc c ; 3a5d + jr Function3a65 ; 3a5e +; 3a60 + +Function3a60:: + ld [hl], $6e ; 3a60 + inc hl ; 3a62 + ld c, $3 ; 3a63 + ld [$d151], a ; 3a65 + ld de, $d151 ; 3a68 + ld b, $41 ; 3a6b + jp Function323d ; 3a6d +; 3a70 + +Function3a70:: + ld hl, $d149 ; 3a70 + ld c, a ; 3a73 + ld b, $0 ; 3a74 + add hl, bc ; 3a76 + ld a, [hl] ; 3a77 + ret ; 3a78 +; 3a79 + +Function3a79:: + push bc ; 3a79 + push de ; 3a7a + push hl ; 3a7b + ldh a, [hROMBank] ; 3a7c + push af ; 3a7e + ld a, $14 ; 3a7f + rst Bankswitch ; 3a81 + ld a, [$ce60] ; 3a82 + cp $fd ; 3a85 + jr z, Function3a9e ; 3a87 + dec a ; 3a89 + ld bc, $20 ; 3a8a + ld hl, $5b0b ; 3a8d + call Function31a3 ; 3a90 + ld de, $d120 ; 3a93 + ld bc, $20 ; 3a96 + call Function311a ; 3a99 + jr Function3ab3 ; 3a9c +; 3a9e + +Function3a9e:: + ld de, $7a83 ; 3a9e + ld b, $55 ; 3aa1 + ld hl, $d131 ; 3aa3 + ld [hl], b ; 3aa6 + ld hl, $d132 ; 3aa7 + ld [hl], e ; 3aaa + inc hl ; 3aab + ld [hl], d ; 3aac + inc hl ; 3aad + ld [hl], e ; 3aae + inc hl ; 3aaf + ld [hl], d ; 3ab0 + jr Function3ab3 ; 3ab1 +; 3ab3 + +Function3ab3:: + ld a, [$ce60] ; 3ab3 + ld [$d120], a ; 3ab6 + pop af ; 3ab9 + rst Bankswitch ; 3aba + pop hl ; 3abb + pop de ; 3abc + pop bc ; 3abd + ret ; 3abe +; 3abf + +Function3abf:: + ld a, [$d005] ; 3abf + ld hl, $db8c ; 3ac2 + push hl ; 3ac5 + push bc ; 3ac6 + call Function3199 ; 3ac7 + ld de, $cf6b ; 3aca + push de ; 3acd + ld bc, $b ; 3ace + call Function311a ; 3ad1 + pop de ; 3ad4 + ld hl, $677e ; 3ad5 + ld a, $1 ; 3ad8 + rst FarCall ; 3ada + pop bc ; 3adb + pop hl ; 3adc + ret ; 3add +; 3ade + +Function3ade:: + ld b, c ; 3ade + res 7, c ; 3adf + res 6, c ; 3ae1 + res 5, c ; 3ae3 + bit 5, b ; 3ae5 + jr z, Function3af0 ; 3ae7 + bit 7, b ; 3ae9 + jr nz, Function3af0 ; 3aeb + ld [hl], $f0 ; 3aed + inc hl ; 3aef + ld a, [de] ; 3af0 + swap a ; 3af1 + call Function3b15 ; 3af3 + ld a, [de] ; 3af6 + call Function3b15 ; 3af7 + inc de ; 3afa + dec c ; 3afb + jr nz, Function3af0 ; 3afc + bit 7, b ; 3afe + jr z, Function3b14 ; 3b00 + bit 6, b ; 3b02 + jr nz, Function3b07 ; 3b04 + dec hl ; 3b06 + bit 5, b ; 3b07 + jr z, Function3b0e ; 3b09 + ld [hl], $f0 ; 3b0b + inc hl ; 3b0d + ld [hl], $f6 ; 3b0e + call Function31e2 ; 3b10 + inc hl ; 3b13 + ret ; 3b14 +; 3b15 + +Function3b15:: + and $f ; 3b15 + and a ; 3b17 + jr z, Function3b2f ; 3b18 + bit 7, b ; 3b1a + jr z, Function3b29 ; 3b1c + bit 5, b ; 3b1e + jr z, Function3b27 ; 3b20 + ld [hl], $f0 ; 3b22 + inc hl ; 3b24 + res 5, b ; 3b25 + res 7, b ; 3b27 + add a, $f6 ; 3b29 + ld [hli], a ; 3b2b + jp Function31e2 ; 3b2c +; 3b2f + +Function3b2f:: + bit 7, b ; 3b2f + jr z, Function3b29 ; 3b31 + bit 6, b ; 3b33 + ret nz ; 3b35 + ld a, $7f ; 3b36 + ld [hli], a ; 3b38 + ret ; 3b39 +; 3b3a + +Function3b3a:: + push bc ; 3b3a + ld hl, $da2a ; 3b3b + ld c, a ; 3b3e + ld b, $0 ; 3b3f + add hl, bc ; 3b41 + ld a, [$d005] ; 3b42 + call Function3b4a ; 3b45 + pop bc ; 3b48 + ret ; 3b49 +; 3b4a + +Function3b4a:: + ld bc, $30 ; 3b4a + jp Function31a3 ; 3b4d +; 3b50 + +Function3b50:: + push hl ; 3b50 + ld a, b ; 3b51 + dec a ; 3b52 + ld b, $0 ; 3b53 + add hl, bc ; 3b55 + ld hl, $5b0b ; 3b56 + ld bc, $20 ; 3b59 + call Function31a3 ; 3b5c + pop bc ; 3b5f + ld a, $14 ; 3b60 + call Function313c ; 3b62 + ld b, l ; 3b65 + ld c, h ; 3b66 + pop hl ; 3b67 + ret ; 3b68 +; 3b69 + +Function3b69:: + push af ; 3b69 + ldh a, [$ffe6] ; 3b6a + and a ; 3b6c + jr nz, Function3b72 ; 3b6d + pop af ; 3b6f + jr Function3b81 ; 3b70 +; 3b72 + +Function3b72:: + pop af ; 3b72 + jr Function3b91 ; 3b73 +; 3b75 + +Function3b75:: + push af ; 3b75 + ldh a, [$ffe6] ; 3b76 + and a ; 3b78 + jr z, Function3b7e ; 3b79 + pop af ; 3b7b + jr Function3b81 ; 3b7c +; 3b7e + +Function3b7e:: + pop af ; 3b7e + jr Function3b91 ; 3b7f +; 3b81 + +Function3b81:: + push bc ; 3b81 + ld c, a ; 3b82 + ld b, $0 ; 3b83 + ld hl, $da2a ; 3b85 + add hl, bc ; 3b88 + ld a, [$cfc6] ; 3b89 + call Function3b4a ; 3b8c + pop bc ; 3b8f + ret ; 3b90 +; 3b91 + +Function3b91:: + push bc ; 3b91 + ld c, a ; 3b92 + ld b, $0 ; 3b93 + ld hl, $dd5d ; 3b95 + add hl, bc ; 3b98 + ld a, [$cb41] ; 3b99 + call Function3b4a ; 3b9c + pop bc ; 3b9f + ret ; 3ba0 +; 3ba1 + +Function3ba1:: + xor a ; 3ba1 + ld [$d141], a ; 3ba2 + ld [$d142], a ; 3ba5 + ret ; 3ba8 +; 3ba9 + +Function3ba9:: + xor a ; 3ba9 + ldh [$ffe6], a ; 3baa + ret ; 3bac +; 3bad + +Function3bad:: + ld a, $1 ; 3bad + ldh [$ffe6], a ; 3baf + ret ; 3bb1 +; 3bb2 + +Function3bb2:: + ldh a, [$ffe6] ; 3bb2 + and a ; 3bb4 + jr z, Function3bd4 ; 3bb5 + jr Function3bc0 ; 3bb7 +; 3bb9 + +Function3bb9:: + ldh a, [$ffe6] ; 3bb9 + and a ; 3bbb + jr z, Function3bc0 ; 3bbc + jr Function3bd4 ; 3bbe +; 3bc0 + +Function3bc0:: + ld a, [$cfc6] ; 3bc0 + ld hl, $da49 ; 3bc3 + call Function3b4a ; 3bc6 + ld d, h ; 3bc9 + ld e, l ; 3bca + ld hl, $cb19 ; 3bcb + ld bc, $5 ; 3bce + jp Function311a ; 3bd1 +; 3bd4 + +Function3bd4:: + ld a, [$d116] ; 3bd4 + dec a ; 3bd7 + ret z ; 3bd8 + ld a, [$cb41] ; 3bd9 + ld hl, $dd7c ; 3bdc + call Function3b4a ; 3bdf + ld d, h ; 3be2 + ld e, l ; 3be3 + ld hl, $d0fc ; 3be4 + ld bc, $5 ; 3be7 + jp Function311a ; 3bea +; 3bed + +Function3bed:: + call Function3bf8 ; 3bed + ld c, $3 ; 3bf0 + call Function33c ; 3bf2 + jp WaitBGMap ; 3bf5 +; 3bf8 + +Function3bf8:: + ld a, $f ; 3bf8 + ld hl, $5da9 ; 3bfa + rst FarCall ; 3bfd + ld a, $f ; 3bfe + ld hl, $5e97 ; 3c00 + rst FarCall ; 3c03 + ret ; 3c04 +; 3c05 + +GetBattleVar:: ; 3c05 + push hl ; 3c05 + call GetBattleVarAddr ; 3c06 + pop hl ; 3c09 + ret ; 3c0a +; 3c0b + +GetBattleVarAddr:: ; 3c0b +; Get variable from pair a, depending on whose turn it is. +; There are 21 variable pairs. + + push bc + + ld hl, .battlevarpairs + ld c, a + ld b, 0 +rept 2 + add hl, bc +endr + + ld a, [hli] + ld h, [hl] + ld l, a + +; Enemy turn uses the second byte instead. +; This lets battle variable calls be side-neutral. + ld a, [hBattleTurn] + and a + jr z, .getvar + inc hl + +.getvar +; var id + ld a, [hl] + ld c, a + ld b, 0 + + ld hl, .vars +rept 2 + add hl, bc +endr + + ld a, [hli] + ld h, [hl] + ld l, a + + ld a, [hl] + + pop bc + ret + +.battlevarpairs + dw .substatus1, .substatus2, .substatus3, .substatus4, .substatus5 + dw .substatus1opp, .substatus2opp, .substatus3opp, .substatus4opp, .substatus5opp + dw .status, .statusopp, .animation, .effect, .power, .type + dw .curmove, .lastcounter, .lastcounteropp, .lastmove, .lastmoveopp + +; player enemy +.substatus1 db PLAYER_SUBSTATUS_1, ENEMY_SUBSTATUS_1 +.substatus1opp db ENEMY_SUBSTATUS_1, PLAYER_SUBSTATUS_1 +.substatus2 db PLAYER_SUBSTATUS_2, ENEMY_SUBSTATUS_2 +.substatus2opp db ENEMY_SUBSTATUS_2, PLAYER_SUBSTATUS_2 +.substatus3 db PLAYER_SUBSTATUS_3, ENEMY_SUBSTATUS_3 +.substatus3opp db ENEMY_SUBSTATUS_3, PLAYER_SUBSTATUS_3 +.substatus4 db PLAYER_SUBSTATUS_4, ENEMY_SUBSTATUS_4 +.substatus4opp db ENEMY_SUBSTATUS_4, PLAYER_SUBSTATUS_4 +.substatus5 db PLAYER_SUBSTATUS_5, ENEMY_SUBSTATUS_5 +.substatus5opp db ENEMY_SUBSTATUS_5, PLAYER_SUBSTATUS_5 +.status db PLAYER_STATUS, ENEMY_STATUS +.statusopp db ENEMY_STATUS, PLAYER_STATUS +.animation db PLAYER_MOVE_ANIMATION, ENEMY_MOVE_ANIMATION +.effect db PLAYER_MOVE_EFFECT, ENEMY_MOVE_EFFECT +.power db PLAYER_MOVE_POWER, ENEMY_MOVE_POWER +.type db PLAYER_MOVE_TYPE, ENEMY_MOVE_TYPE +.curmove db PLAYER_CUR_MOVE, ENEMY_CUR_MOVE +.lastcounter db PLAYER_COUNTER_MOVE, ENEMY_COUNTER_MOVE +.lastcounteropp db ENEMY_COUNTER_MOVE, PLAYER_COUNTER_MOVE +.lastmove db PLAYER_LAST_MOVE, ENEMY_LAST_MOVE +.lastmoveopp db ENEMY_LAST_MOVE, PLAYER_LAST_MOVE + +.vars + dw PlayerSubStatus1, EnemySubStatus1 + dw PlayerSubStatus2, EnemySubStatus2 + dw PlayerSubStatus3, EnemySubStatus3 + dw PlayerSubStatus4, EnemySubStatus4 + dw PlayerSubStatus5, EnemySubStatus5 + dw BattleMonStatus, EnemyMonStatus + dw wPlayerMoveStructAnimation, wEnemyMoveStructAnimation + dw wPlayerMoveStructEffect, wEnemyMoveStructEffect + dw wPlayerMoveStructPower, wEnemyMoveStructPower + dw wPlayerMoveStructType, wEnemyMoveStructType + dw CurPlayerMove, CurEnemyMove + dw LastEnemyCounterMove, LastPlayerCounterMove + dw LastPlayerMove, LastEnemyMove +; 3cb4 + db $23 ; XXX + +FarCopyRadioText:: ; 3cb5 + inc hl + ld a, [$ff9d] + push af + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld [$ff9d], a + ld [MBC3RomBank], a + ld a, e + ld l, a + ld a, d + ld h, a + ld de, wRadioText + ld bc, 2 * SCREEN_WIDTH + call CopyBytes + pop af + ld [$ff9d], a + ld [MBC3RomBank], a + ret +; 3cd6 + +Function3cd6:: + ldh a, [hROMBank] ; 3cd6 + push af ; 3cd8 + ld a, $40 ; 3cd9 + rst Bankswitch ; 3cdb + call Functionf5e ; 3cdc + pop af ; 3cdf + rst Bankswitch ; 3ce0 + ret ; 3ce1 +; 3ce2 + +Function3ce2:: + ld a, $32 ; 3ce2 + rst Bankswitch ; 3ce4 + ld a, [hli] ; 3ce5 + ld [$ca10], a ; 3ce6 + ld a, [hl] ; 3ce9 + ld [$ca11], a ; 3cea + ld a, $33 ; 3ced + rst Bankswitch ; 3cef + ret ; 3cf0 +; 3cf1 + +Function3cf1:: + push hl ; 3cf1 + push de ; 3cf2 + ld hl, $ca10 ; 3cf3 + ld e, [hl] ; 3cf6 + inc hl ; 3cf7 + ld d, [hl] ; 3cf8 + ld a, $32 ; 3cf9 + rst Bankswitch ; 3cfb + ld a, [de] ; 3cfc + ld [$ca17], a ; 3cfd + inc de ; 3d00 + ld a, $33 ; 3d01 + rst Bankswitch ; 3d03 + ld [hl], d ; 3d04 + dec hl ; 3d05 + ld [hl], e ; 3d06 + pop de ; 3d07 + pop hl ; 3d08 + ld a, [$ca17] ; 3d09 + ret ; 3d0c +; 3d0d + +Function3d0d:: + ldh a, [$ffc8] ; 3d0d + and a ; 3d0f + ret z ; 3d10 + ld a, $0 ; 3d11 + ld [$ce68], a ; 3d13 + ld a, $c8 ; 3d16 + ld [$ce69], a ; 3d18 + ld a, $0 ; 3d1b + ld [$ce6a], a ; 3d1d + ld a, $c7 ; 3d20 + ld [$ce6b], a ; 3d22 + ld a, $9 ; 3d25 + ld [$ce67], a ; 3d27 + ret ; 3d2a +; 3d2b + +Function3d2b:: + ld [$c5c0], a ; 3d2b + ldh a, [hROMBank] ; 3d2e + push af ; 3d30 + ld a, $23 ; 3d31 + rst Bankswitch ; 3d33 + ld a, [$c5c0] ; 3d34 + call Function51f7 ; 3d37 + pop af ; 3d3a + rst Bankswitch ; 3d3b + ret ; 3d3c +; 3d3d + +Function3d3d:: + ld [$c5c0], a ; 3d3d + ldh a, [hROMBank] ; 3d40 + push af ; 3d42 + ld a, $23 ; 3d43 + rst Bankswitch ; 3d45 + ld a, [$c5c0] ; 3d46 + call Function5332 ; 3d49 + pop af ; 3d4c + rst Bankswitch ; 3d4d + ret ; 3d4e +; 3d4f + +Function3d4f:: + push hl ; 3d4f + push de ; 3d50 + push bc ; 3d51 + push af ; 3d52 + ldh a, [hROMBank] ; 3d53 + push af ; 3d55 + ld a, $3a ; 3d56 + ldh [hROMBank], a ; 3d58 + ld MBC3RomBank, a ; 3d5a + call Function4000 ; 3d5d + pop af ; 3d60 + ldh [hROMBank], a ; 3d61 + ld MBC3RomBank, a ; 3d63 + pop af ; 3d66 + pop bc ; 3d67 + pop de ; 3d68 + pop hl ; 3d69 + ret ; 3d6a +; 3d6b + +Function3d6b:: + push hl ; 3d6b + push de ; 3d6c + push bc ; 3d6d + push af ; 3d6e + ldh a, [hROMBank] ; 3d6f + push af ; 3d71 + ld a, $3a ; 3d72 + ldh [hROMBank], a ; 3d74 + ld MBC3RomBank, a ; 3d76 + call Function405c ; 3d79 + pop af ; 3d7c + ldh [hROMBank], a ; 3d7d + ld MBC3RomBank, a ; 3d7f + pop af ; 3d82 + pop bc ; 3d83 + pop de ; 3d84 + pop hl ; 3d85 + ret ; 3d86 +; 3d87 + +Function3d87:: + ldh [hROMBank], a ; 3d87 + ld MBC3RomBank, a ; 3d89 + ld a, [de] ; 3d8c + ld [$c198], a ; 3d8d + ld a, $3a ; 3d90 + ldh [hROMBank], a ; 3d92 + ld MBC3RomBank, a ; 3d94 + ret ; 3d97 +; 3d98 + +Function3d98:: + push hl ; 3d98 + push de ; 3d99 + push bc ; 3d9a + push af ; 3d9b + ldh a, [hROMBank] ; 3d9c + push af ; 3d9e + ld a, $3a ; 3d9f + ldh [hROMBank], a ; 3da1 + ld MBC3RomBank, a ; 3da3 + ld a, e ; 3da6 + and a ; 3da7 + jr z, Function3daf ; 3da8 + call Function4b30 ; 3daa + jr Function3db2 ; 3dad +; 3daf + +Function3daf:: + call Function4000 ; 3daf + pop af ; 3db2 + ldh [hROMBank], a ; 3db3 + ld MBC3RomBank, a ; 3db5 + pop af ; 3db8 + pop bc ; 3db9 + pop de ; 3dba + pop hl ; 3dbb + ret ; 3dbc +; 3dbd + +Function3dbd:: + push hl ; 3dbd + push de ; 3dbe + push bc ; 3dbf + push af ; 3dc0 + ldh a, [hROMBank] ; 3dc1 + push af ; 3dc3 + ld a, $3a ; 3dc4 + ldh [hROMBank], a ; 3dc6 + ld MBC3RomBank, a ; 3dc8 + push de ; 3dcb + ld de, $0 ; 3dcc + call Function4b30 ; 3dcf + call Function32e ; 3dd2 + pop de ; 3dd5 + call Function4b30 ; 3dd6 + pop af ; 3dd9 + ldh [hROMBank], a ; 3dda + ld MBC3RomBank, a ; 3ddc + pop af ; 3ddf + pop bc ; 3de0 + pop de ; 3de1 + pop hl ; 3de2 + ret ; 3de3 +; 3de4 + +Function3de4:: + push hl ; 3de4 + push de ; 3de5 + push bc ; 3de6 + push af ; 3de7 + ldh a, [hROMBank] ; 3de8 + push af ; 3dea + ld a, $3c ; 3deb + ldh [hROMBank], a ; 3ded + ld MBC3RomBank, a ; 3def + ld hl, $6747 ; 3df2 + add hl, de ; 3df5 + add hl, de ; 3df6 + add hl, de ; 3df7 + add hl, de ; 3df8 + add hl, de ; 3df9 + add hl, de ; 3dfa + ld e, [hl] ; 3dfb + inc hl ; 3dfc + ld d, [hl] ; 3dfd + inc hl ; 3dfe + ld a, [hli] ; 3dff + ld [$c1b0], a ; 3e00 + ld a, [hli] ; 3e03 + ld [$c1b1], a ; 3e04 + ld a, [hli] ; 3e07 + ld [$c1b2], a ; 3e08 + ld a, [hl] ; 3e0b + ld [$c1b3], a ; 3e0c + ld a, $3a ; 3e0f + ldh [hROMBank], a ; 3e11 + ld MBC3RomBank, a ; 3e13 + call Function4b79 ; 3e16 + pop af ; 3e19 + ldh [hROMBank], a ; 3e1a + ld MBC3RomBank, a ; 3e1c + pop af ; 3e1f + pop bc ; 3e20 + pop de ; 3e21 + pop hl ; 3e22 + ret ; 3e23 +; 3e24 + +Function3e24:: + push hl ; 3e24 + push de ; 3e25 + push bc ; 3e26 + push af ; 3e27 + call Function3fbc ; 3e28 + jr nc, Function3e33 ; 3e2b + ld a, [$c1bf] ; 3e2d + cp e ; 3e30 + jr c, Function3e4a ; 3e31 + ldh a, [hROMBank] ; 3e33 + push af ; 3e35 + ld a, $3a ; 3e36 + ldh [hROMBank], a ; 3e38 + ld MBC3RomBank, a ; 3e3a + ld a, e ; 3e3d + ld [$c1bf], a ; 3e3e + call Function4c04 ; 3e41 + pop af ; 3e44 + ldh [hROMBank], a ; 3e45 + ld MBC3RomBank, a ; 3e47 + pop af ; 3e4a + pop bc ; 3e4b + pop de ; 3e4c + pop hl ; 3e4d + ret ; 3e4e +; 3e4f + +Function3e4f:: + call Function3e56 ; 3e4f + call Function3e24 ; 3e52 + ret ; 3e55 +; 3e56 + +Function3e56:: + push hl ; 3e56 + ld hl, $c0cc ; 3e57 + bit 0, [hl] ; 3e5a + jr nz, Function3e57 ; 3e5c + ld hl, $c0fe ; 3e5e + bit 0, [hl] ; 3e61 + jr nz, Function3e57 ; 3e63 + ld hl, $c130 ; 3e65 + bit 0, [hl] ; 3e68 + jr nz, Function3e57 ; 3e6a + ld hl, $c162 ; 3e6c + bit 0, [hl] ; 3e6f + jr nz, Function3e57 ; 3e71 + pop hl ; 3e73 + ret ; 3e74 +; 3e75 + +Function3e75:: + ld a, $77 ; 3e75 + ld [$c19a], a ; 3e77 + ret ; 3e7a +; 3e7b + +Function3e7b:: + ld a, $33 ; 3e7b + ld [$c19a], a ; 3e7d + ret ; 3e80 +; 3e81 + +Function3e81:: + xor a ; 3e81 + ld [$c19a], a ; 3e82 + ret ; 3e85 +; 3e86 + +Function3e86:: + ld a, $4 ; 3e86 + ld [$c1a7], a ; 3e88 + ret ; 3e8b +; 3e8c + +Function3e8c:: + ld a, $84 ; 3e8c + ld [$c1a7], a ; 3e8e + ret ; 3e91 +; 3e92 + +Function3e92:: + and a ; 3e92 + ret z ; 3e93 + dec a ; 3e94 + call Function3d6b ; 3e95 + jr Function3e92 ; 3e98 +; 3e9a + +Function3e9a:: + push hl ; 3e9a + push de ; 3e9b + push bc ; 3e9c + push af ; 3e9d + call Function3f75 ; 3e9e + ld a, [$c1c0] ; 3ea1 + cp e ; 3ea4 + jr z, Function3eb8 ; 3ea5 + ld a, $8 ; 3ea7 + ld [$c1a7], a ; 3ea9 + ld a, e ; 3eac + ld [$c1a9], a ; 3ead + ld a, d ; 3eb0 + ld [$c1aa], a ; 3eb1 + ld a, e ; 3eb4 + ld [$c1c0], a ; 3eb5 + pop af ; 3eb8 + pop bc ; 3eb9 + pop de ; 3eba + pop hl ; 3ebb + ret ; 3ebc +; 3ebd + +Function3ebd:: + push hl ; 3ebd + push de ; 3ebe + push bc ; 3ebf + push af ; 3ec0 + call Function3f75 ; 3ec1 + ld a, [$c1c0] ; 3ec4 + cp e ; 3ec7 + jr z, Function3edc ; 3ec8 + push de ; 3eca + ld de, $0 ; 3ecb + call Function3d98 ; 3ece + call Function32e ; 3ed1 + pop de ; 3ed4 + ld a, e ; 3ed5 + ld [$c1c0], a ; 3ed6 + call Function3d98 ; 3ed9 + pop af ; 3edc + pop bc ; 3edd + pop de ; 3ede + pop hl ; 3edf + ret ; 3ee0 +; 3ee1 + +Function3ee1:: + push hl ; 3ee1 + push de ; 3ee2 + push bc ; 3ee3 + push af ; 3ee4 + xor a ; 3ee5 + ld [$c1c1], a ; 3ee6 + ld de, $13 ; 3ee9 + ld a, [$d682] ; 3eec + cp $1 ; 3eef + jr z, Function3ef6 ; 3ef1 + call Function3f75 ; 3ef3 + push de ; 3ef6 + ld de, $0 ; 3ef7 + call Function3d98 ; 3efa + call Function32e ; 3efd + pop de ; 3f00 + ld a, e ; 3f01 + ld [$c1c0], a ; 3f02 + call Function3d98 ; 3f05 + pop af ; 3f08 + pop bc ; 3f09 + pop de ; 3f0a + pop hl ; 3f0b + ret ; 3f0c +; 3f0d + +Function3f0d:: + ld a, [$c1c1] ; 3f0d + and a ; 3f10 + jr z, Function3f25 ; 3f11 + xor a ; 3f13 + ld [$c1c0], a ; 3f14 + ld de, $0 ; 3f17 + call Function3d98 ; 3f1a + call Function32e ; 3f1d + xor a ; 3f20 + ld [$c1c1], a ; 3f21 + ret ; 3f24 +; 3f25 + +Function3f25:: + push hl ; 3f25 + push de ; 3f26 + push bc ; 3f27 + push af ; 3f28 + ld de, $0 ; 3f29 + call Function3d98 ; 3f2c + call Function32e ; 3f2f + ld a, [$c1c0] ; 3f32 + ld e, a ; 3f35 + ld d, $0 ; 3f36 + call Function3d98 ; 3f38 + pop af ; 3f3b + pop bc ; 3f3c + pop de ; 3f3d + pop hl ; 3f3e + ret ; 3f3f +; 3f40 + +Function3f40:: + ld a, [$d682] ; 3f40 + cp $4 ; 3f43 + jr z, Function3f59 ; 3f45 + cp $8 ; 3f47 + jr z, Function3f59 ; 3f49 + ld a, [$d572] ; 3f4b + bit 2, a ; 3f4e + jr nz, Function3f5e ; 3f50 + and a ; 3f52 + ret ; 3f53 +; 3f54 + +Function3f54:: + ld de, $13 ; 3f54 + scf ; 3f57 + ret ; 3f58 +; 3f59 + +Function3f59:: + ld de, $21 ; 3f59 + scf ; 3f5c + ret ; 3f5d +; 3f5e + +Function3f5e:: + ld a, [$da00] ; 3f5e + cp $a ; 3f61 + jr nz, Function3f52 ; 3f63 + ld a, [$da01] ; 3f65 + cp $f ; 3f68 + jr z, Function3f70 ; 3f6a + cp $11 ; 3f6c + jr nz, Function3f52 ; 3f6e + ld de, $58 ; 3f70 + scf ; 3f73 + ret ; 3f74 +; 3f75 + +Function3f75:: + call Function3f40 ; 3f75 + ret c ; 3f78 + call Function2d96 ; 3f79 + ret ; 3f7c +; 3f7d + +Function3f7d:: + ld a, $20 ; 3f7d + ld [$c398], a ; 3f7f + ld [$c39c], a ; 3f82 + ld a, $50 ; 3f85 + ld [$c399], a ; 3f87 + ld a, $58 ; 3f8a + ld [$c39d], a ; 3f8c + xor a ; 3f8f + ld [$c39b], a ; 3f90 + ld [$c39f], a ; 3f93 + ld a, [$c196] ; 3f96 + cp $64 ; 3f99 + jr nc, Function3fb3 ; 3f9b + add a, $1 ; 3f9d + daa ; 3f9f + ld b, a ; 3fa0 + swap a ; 3fa1 + and $f ; 3fa3 + add a, $f6 ; 3fa5 + ld [$c39a], a ; 3fa7 + ld a, b ; 3faa + and $f ; 3fab + add a, $f6 ; 3fad + ld [$c39e], a ; 3faf + ret ; 3fb2 +; 3fb3 + +Function3fb3:: + ld a, $ff ; 3fb3 + ld [$c39a], a ; 3fb5 + ld [$c39e], a ; 3fb8 + ret ; 3fbb +; 3fbc + +Function3fbc:: + ld a, [$c0cc] ; 3fbc + bit 0, a ; 3fbf + jr nz, Function3fda ; 3fc1 + ld a, [$c0fe] ; 3fc3 + bit 0, a ; 3fc6 + jr nz, Function3fda ; 3fc8 + ld a, [$c130] ; 3fca + bit 0, a ; 3fcd + jr nz, Function3fda ; 3fcf + ld a, [$c162] ; 3fd1 + bit 0, a ; 3fd4 + jr nz, Function3fda ; 3fd6 + and a ; 3fd8 + ret ; 3fd9 +; 3fda + +Function3fda:: + scf ; 3fda + ret ; 3fdb +; 3fdc + +Function3fdc:: + xor a ; 3fdc + ld [$c0cc], a ; 3fdd + ld [$c19c], a ; 3fe0 + ldh [$ff10], a ; 3fe3 + ldh [$ff11], a ; 3fe5 + ldh [$ff12], a ; 3fe7 + ldh [$ff13], a ; 3fe9 + ldh [$ff14], a ; 3feb + ret ; 3fed |