├── .gitignore ├── 1.s ├── 3.s ├── 4.s ├── 5.s ├── Makefile ├── README.md ├── bc.s ├── programbank ├── 4.s └── 5.s └── text.charmap /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.gb 3 | -------------------------------------------------------------------------------- /1.s: -------------------------------------------------------------------------------- 1 | ;freespace: MACRO 2 | ; rept (\1 / $4000 + 1) * $4000 - \1 3 | ; db -1 4 | ; endr 5 | ;ENDM 6 | freespace: MACRO 7 | incbin "base1.gb",\1,(\1 / $4000 + 1) * $4000 - \1 8 | ENDM 9 | 10 | bankswitch: MACRO 11 | ld [$DF99],a 12 | ld [$2100],a 13 | ENDM 14 | 15 | SECTION "func0",ROM0[0] 16 | ld hl,$FFFE 17 | ld sp,hl 18 | jp Function150 19 | db 1 20 | 21 | SECTION "func8",ROM0[8] 22 | jp $2AD 23 | 24 | SECTION "vblank",ROM0[$40] 25 | jp $675 26 | 27 | SECTION "lcdc",ROM0[$48] 28 | jp $C0A4 29 | 30 | SECTION "timer",ROM0[$50] 31 | reti 32 | 33 | SECTION "serial",ROM0[$58] 34 | reti 35 | 36 | SECTION "joypad",ROM0[$60] 37 | reti 38 | 39 | SECTION "header",ROM0[$100] 40 | nop 41 | jp Function150 42 | 43 | SECTION "start",ROM0[$150] 44 | 45 | Function150: 46 | jp Function5FE 47 | Function153: 48 | jp $38A9 49 | Function156: 50 | jp $0F96 51 | Function159: 52 | jp $1758 53 | Function15C: 54 | jp $163C 55 | Function15F: 56 | jp $1968 57 | Function162: 58 | jp Function167E 59 | Function165: 60 | jp $18B3 61 | Function168: 62 | jp Function3C3 63 | Function16B: 64 | jp $1694 65 | Function16E: 66 | jp Function3CD 67 | Function171: 68 | jp $5A87 69 | Function174: 70 | jp $273B 71 | Function177: 72 | jp $274B 73 | Function17A: 74 | jp $2EDC 75 | Function17D: 76 | jp $2F0A 77 | Function180: 78 | jp $2CF0 79 | Function183: 80 | jp $1004 81 | Function186: 82 | jp $2CD6 83 | Function189: 84 | jp $1973 85 | Function18C: 86 | jp $19B5 87 | Function18F: 88 | jp $2245 89 | Function192: 90 | jp $227A 91 | Function195: 92 | jp $22A3 93 | Function198: 94 | jp $22CC 95 | Function19B: 96 | jp $1AFC 97 | Function19E: 98 | jp $1618 99 | Function1A1: 100 | jp $157D 101 | Function1A4: 102 | jp Function1F4 103 | Function1A7: 104 | jp $096F 105 | Function1AA: 106 | jp $3057 107 | Function1AD: 108 | jp $1093 109 | Function1B0: 110 | jp Function2C37 111 | Function1B3: 112 | jp Function1BD 113 | Function1B6: 114 | jp Function1F4 115 | 116 | Data1B9: ; $1B9 117 | dw $34D3 118 | dw $3693 119 | 120 | Function1BD: ; $1BD 121 | ld a,6 122 | bankswitch 123 | ld de,$9000 124 | ld hl,$363 125 | call Function2516 126 | call $18B3 127 | ld de,$9800 128 | ld hl,$365 129 | call Function2521 130 | call Function1E6 131 | ld a,1 132 | bankswitch 133 | ret 134 | 135 | Function1E6: ; $1E6 136 | ld c,$12 137 | .loop 138 | push bc 139 | ld bc,$0014 140 | call $18B3 141 | pop bc 142 | dec c 143 | jr nz,.loop 144 | ret 145 | 146 | Function1F4: ; $1F4 147 | ld [$FF91],a 148 | ld a,[$DF99] 149 | push af 150 | push hl 151 | push de 152 | ld a,[$FF91] 153 | ld e,a 154 | ld d,0 155 | ld hl,.pointers 156 | add hl,de 157 | add hl,de 158 | ld a,[hli] 159 | ld [$C0D1],a 160 | ld a,[hli] 161 | ld [$C0D2],a 162 | ld a,$C3 ; jump 163 | ld [$C0D0],a 164 | pop de 165 | pop hl 166 | ld a,1 167 | bankswitch 168 | call $C0D0 169 | pop af 170 | bankswitch 171 | ret 172 | 173 | .pointers 174 | dw $0248 175 | dw $5A87 176 | dw $5943 177 | dw $1AFC 178 | dw $5939 179 | dw $1A28 180 | dw $1A3D 181 | 182 | db $CF; $236 183 | dw $4000 184 | db $CF 185 | dw $4003 186 | db $CF 187 | dw $4006 188 | db $CF 189 | dw $4009 190 | db $CF 191 | dw $400C 192 | db $CF 193 | dw $400F 194 | db $CF 195 | dw $4012 196 | dw $4015 197 | dw $4017 198 | dw $4019 199 | dw $401B 200 | dw $401D 201 | dw $401F 202 | dw $4021 203 | dw $4023 204 | dw $4025 205 | dw $4027 206 | dw $4029 207 | dw $402B 208 | dw $402D 209 | dw $402F 210 | dw $4031 211 | dw $4033 212 | dw $4035 213 | dw $4037 214 | dw $4039 215 | dw $403B 216 | dw $403D 217 | dw $403F 218 | dw $4041 219 | dw $4043 220 | dw $4045 221 | dw $4047 222 | dw $4049 223 | dw $404B 224 | dw $404D 225 | dw $404F 226 | dw $4051 227 | dw $4053 228 | dw $4055 229 | dw $4057 230 | dw $4059 231 | dw $405B 232 | dw $405D 233 | dw $405F 234 | dw $4061 235 | dw $4063 236 | dw $4065 237 | dw $4067 238 | dw $4069 239 | dw $406B 240 | dw $406D 241 | dw $406F 242 | dw $4071 243 | dw $4073 244 | dw $4075 245 | 246 | Function2AD: ; $2AD 247 | ld [$FF8C],a 248 | ld a,l 249 | ld [$FF8D],a 250 | ld a,h 251 | ld [$FF8E],a 252 | ld a,e 253 | ld [$FF8F],a 254 | ld a,d 255 | ld [$FF90],a 256 | ld a,[$DF9A] 257 | bankswitch 258 | pop hl 259 | ld de,.Function2DC 260 | push de 261 | ld e,[hl] 262 | inc hl 263 | ld d,[hl] 264 | push de 265 | ld a,[$FF8D] 266 | ld l,a 267 | ld a,[$FF8E] 268 | ld h,a 269 | ld a,[$FF8F] 270 | ld e,a 271 | ld a,[$FF90] 272 | ld d,a 273 | ld a,[$FF8C] 274 | ret 275 | 276 | .Function2DC ; $2DC 277 | push af 278 | ld a,1 279 | bankswitch 280 | pop af 281 | ret 282 | 283 | __MegaManSpriteGFX: 284 | dw _MegaManSpriteGFX 285 | __ItemPickupSpriteGFX: 286 | dw _ItemPickupSpriteGFX 287 | 288 | __UnknownBulletGFX: 289 | dw _UnknownBulletGFX 290 | __RollingCutterGFX: 291 | dw _RollingCutterGFX 292 | __ThunderBeamGFX: 293 | dw _ThunderBeamGFX 294 | __IceSlasherGFX: 295 | dw _IceSlasherGFX 296 | __FireStormGFX: 297 | dw _FireStormGFX 298 | __CarryGFX: 299 | dw _CarryGFX 300 | __AtomicFireGFX: 301 | dw _AtomicFireGFX 302 | __TimeStopperGFX: 303 | dw _TimeStopperGFX 304 | __QuickBoomerangGFX: 305 | dw _QuickBoomerangGFX 306 | __BubbleLeadGFX: 307 | dw _BubbleLeadGFX 308 | __MirrorBusterGFX: 309 | dw _MirrorBusterGFX 310 | 311 | __HealthBarGFX: 312 | dw _HealthBarGFX 313 | __SevenSegmentGFX: 314 | dw _SevenSegmentGFX 315 | Pointer305: 316 | dw Pointer1001E 317 | Pointer307: 318 | dw Pointer10020 319 | Pointer309: 320 | dw Pointer10022 321 | Pointer30B: 322 | dw Pointer10024 323 | Pointer30D: 324 | dw Pointer10026 325 | Pointer30F: 326 | dw Pointer10028 327 | Pointer301: 328 | dw Pointer1002A 329 | Pointer313: 330 | dw Pointer1002C 331 | Pointer315: 332 | dw Pointer1002E 333 | Pointer317: 334 | dw Pointer10030 335 | Pointer319: 336 | dw Pointer10032 337 | Pointer31B: 338 | dw Pointer10034 339 | Pointer31D: 340 | dw Pointer10036 341 | Pointer31F: 342 | dw Pointer10038 343 | Pointer321: 344 | dw Pointer1003A 345 | Pointer323: 346 | dw Pointer1003C 347 | Pointer325: 348 | dw Pointer1003E 349 | Pointer327: 350 | dw Pointer10040 351 | Pointer329: 352 | dw Pointer10042 353 | Pointer32B: 354 | dw Pointer10044 355 | Pointer32D: 356 | dw Pointer10046 357 | Pointer32F: 358 | dw Pointer10048 359 | Pointer331: 360 | dw Pointer1004A 361 | Pointer333: 362 | dw Pointer1004C 363 | Pointer335: 364 | dw Pointer1004E 365 | Pointer337: 366 | dw Pointer10050 367 | Pointer339: 368 | dw Pointer10052 369 | Pointer33B: 370 | dw CutManLevelDataPointer 371 | Pointer33D: 372 | dw IceManLevelDataPointer 373 | Pointer33F: 374 | dw FireManLevelDataPointer 375 | Pointer341: 376 | dw ElecManLevelDataPointer 377 | Pointer343: 378 | dw Pointer18000 379 | Pointer345: 380 | dw Pointer18002 381 | Pointer347: 382 | dw Pointer18004 383 | Pointer349: 384 | dw Pointer18006 385 | Pointer34B: 386 | dw Pointer18008 387 | Pointer34D: 388 | dw Pointer1800A 389 | Pointer34F: 390 | dw Pointer1800C 391 | Pointer351: 392 | dw Pointer1800E 393 | Pointer353: 394 | dw Pointer18010 395 | Pointer355: 396 | dw Pointer18012 397 | Pointer357: 398 | dw Pointer18014 399 | Pointer359: 400 | dw Pointer18016 401 | Pointer35B: 402 | dw Pointer18018 403 | Pointer35D: 404 | dw Pointer1801A 405 | Pointer35F: 406 | dw Pointer1801C 407 | Pointer361: 408 | dw Pointer1801E 409 | Pointer363: 410 | dw Pointer18020 411 | Pointer365: 412 | dw Pointer18022 413 | Pointer367: 414 | dw Pointer18024 415 | Pointer369: 416 | dw Pointer18026 417 | Pointer36B: 418 | dw Pointer18028 419 | Pointer36D: 420 | dw Pointer1C000 421 | Pointer36F: 422 | dw Pointer1C002 423 | Pointer371: 424 | dw Pointer1C004 425 | Pointer373: 426 | dw Pointer1C006 427 | Pointer375: 428 | dw Pointer1C008 429 | Pointer377: 430 | dw Pointer1C00A 431 | Pointer379: 432 | dw Pointer1C00C 433 | Pointer37B: 434 | dw Pointer1C00E 435 | Pointer37D: 436 | dw Pointer1C010 437 | Pointer37F: 438 | dw Pointer1C012 439 | Pointer381: 440 | dw Pointer1C014 441 | Pointer383: 442 | dw Pointer1C016 443 | Pointer385: 444 | dw Pointer1C018 445 | Pointer387: 446 | dw Pointer1C01A 447 | Pointer389: 448 | dw Pointer1C01C 449 | Pointer38B: 450 | dw Pointer1C01E 451 | Pointer38D: 452 | dw Pointer1C020 453 | Pointer38F: 454 | dw Pointer1C022 455 | Pointer391: 456 | dw Pointer1C024 457 | Pointer393: 458 | dw Pointer1C026 459 | Pointer395: 460 | dw Pointer1C028 461 | Pointer397: 462 | dw Pointer1C02A 463 | Pointer399: 464 | dw Pointer1C02C 465 | Pointer39B: 466 | dw Pointer1C02E 467 | Pointer39D: 468 | dw Pointer1C030 469 | Pointer39F: 470 | dw Pointer1C032 471 | Pointer3A1: 472 | dw Pointer1C034 473 | Pointer3A3: 474 | dw Pointer1C036 475 | Pointer3A5: 476 | dw Pointer1C038 477 | Pointer3A7: 478 | dw Pointer1C03A 479 | Pointer3A9: 480 | dw Pointer1C03C 481 | Pointer3AB: 482 | dw Pointer20000 483 | Pointer3AD: 484 | dw Pointer20002 485 | Pointer3AF: 486 | dw Pointer20004 487 | Pointer3B1: 488 | dw Pointer20006 489 | Pointer3B3: 490 | dw Pointer30000 491 | Pointer3B5: 492 | dw Pointer30002 493 | Pointer3B7: 494 | dw Pointer30004 495 | Pointer3B9: 496 | dw Pointer30006 497 | Pointer3BB: 498 | dw Pointer30008 499 | Pointer3BD: 500 | dw Pointer3000A 501 | Pointer3BF: 502 | dw Pointer3000C 503 | Pointer3C1: 504 | dw Pointer3000E 505 | 506 | Function3C3: ; $3C3 507 | ld hl,$41E 508 | ld bc,$1E0 509 | call $18B3 510 | ret 511 | 512 | Function3CD: ; $3CD 513 | ; play a song or sound effect 514 | ; a=02: enemy destroyed 515 | ; a=03: electric trap 516 | ; a=04: megaman fires buster 517 | ; a=05: sniper joe fires bullet 518 | ; a=06: megaman takes damage 519 | ; a=08: megaman lands on ground 520 | ; a=09: enemy takes damage 521 | ; a=0A: sniper joe deflects buster 522 | ; a=0B: move cursor 523 | ; a=0F: megaman dies 524 | ; a=10: megaman picks up extra life 525 | ; a=11: cutting wheel appears 526 | ; a=12: health refill 527 | ; a=1E: disappearing platform appears 528 | ; a=21: open menu 529 | ; a=24: chose a robot master 530 | ; a=26: robot master select screen 531 | ; a=2A: title screen 532 | ; a=2B: icicle falls 533 | ; a=2E: password screen 534 | push hl 535 | push de 536 | ld d,a 537 | ld hl,$D920 538 | ld a,[hl] 539 | cp $14 540 | jr z,.next 541 | inc [hl] 542 | inc hl 543 | add l 544 | ld l,a 545 | ld a,h 546 | adc 0 547 | ld h,a 548 | ld [hl],d 549 | .next 550 | pop de 551 | pop hl 552 | ret 553 | 554 | Function3E4: ; $3E4 555 | push hl 556 | push de 557 | push bc 558 | ld hl,$D920 559 | ld a,[hl] 560 | ld [hl],0 561 | inc hl 562 | add l 563 | ld d,a 564 | .loop 565 | ld a,l 566 | cp d 567 | jr z,.next 568 | ld a,[hli] 569 | push hl 570 | push de 571 | call $7DD 572 | pop de 573 | pop hl 574 | jr .loop 575 | .next 576 | call $826 577 | pop bc 578 | pop de 579 | pop hl 580 | ret 581 | 582 | Function405: ; $405 583 | ld a,[$DF99] 584 | push af 585 | ei 586 | ld a,[$DF9A] 587 | bankswitch 588 | call $400F 589 | pop af 590 | bankswitch 591 | ret 592 | 593 | INCBIN "base1.gb",$41E,$5FE-$41E 594 | 595 | Function5FE: ; $5FE 596 | xor a 597 | ld [$DFCF],a 598 | ld [$DFD0],a 599 | xor a 600 | ld [$CCFC],a 601 | ld [$DF8C],a 602 | xor a 603 | ld [$FF24],a 604 | ld [$FF25],a 605 | ld [$FF26],a 606 | di 607 | xor a 608 | ld [$FF0F],a 609 | ld [$FFFF],a 610 | ld hl,$FFFE 611 | ld sp,hl 612 | call $15EA 613 | ld hl,$8000 614 | ld bc,$2000 615 | xor a 616 | call $1694 617 | ld hl,$C000 618 | ld bc,$2000 619 | xor a 620 | call $1694 621 | ld hl,$FF8A 622 | ld bc,$0072 623 | xor a 624 | call $1694 625 | di 626 | xor a 627 | ld [$FF0F],a 628 | ld [$FFFF],a 629 | ld hl,$FFFE 630 | ld sp,hl 631 | ld a,1 632 | bankswitch 633 | call $157D 634 | call $066A 635 | call $15D2 636 | ld a,0 637 | ld [$FF47],a 638 | ld [$FF48],a 639 | ld [$FF49],a 640 | ld [$DF9F],a 641 | call $1654 642 | jp $855 643 | 644 | Function66A: 645 | ld hl,$C0A4 646 | ld bc,$5C 647 | ld a,$C9 648 | jp $1694 649 | 650 | Function675: 651 | push af 652 | push hl 653 | push de 654 | push bc 655 | ld a,[$df85] 656 | inc a 657 | ld [$df85],a 658 | ld a,[$d85f] 659 | ld [$ff43],a 660 | ld a,[$d860] 661 | ld [$ff42],a 662 | ld a,[$df8a] 663 | ld [$ff40],a 664 | ld a,[$df9c] 665 | ld [$ff47],a 666 | ld a,[$df89] 667 | or a 668 | jr nZ,.next1 669 | ld a,$01 670 | ld [$df89],a 671 | call $ff80 672 | call $071c 673 | call $076e 674 | call $06e4 675 | ld hl,$df83 676 | inc [hl] 677 | jr nZ,.next1 678 | inc hl 679 | inc [hl] 680 | .next1 681 | ld a,[$c131] 682 | or a 683 | jr nZ,.next2 684 | dec a 685 | ld [$c131],a 686 | ld a,[$df99] 687 | push af 688 | ei 689 | ld a,[$df9a] 690 | bankswitch 691 | call $400f 692 | pop af 693 | bankswitch 694 | ei 695 | xor a 696 | ld [$c131],a 697 | .next2 698 | pop bc 699 | pop de 700 | pop hl 701 | ld a,$01 702 | ld [$df88],a 703 | pop af 704 | reti 705 | 706 | Function6E4: 707 | ld hl,$c102 708 | ld a,[hl] 709 | or a 710 | ret Z 711 | ld [hl],$00 712 | inc l 713 | ld e,[hl] 714 | inc l 715 | ld d,[hl] 716 | inc l 717 | ldi a,[hl] 718 | ld h,[hl] 719 | ld l,a 720 | ld b,$02 721 | .loop 722 | push bc 723 | push hl 724 | ldi a,[hl] 725 | ld [de],a 726 | inc e 727 | ldi a,[hl] 728 | ld [de],a 729 | inc e 730 | ldi a,[hl] 731 | ld [de],a 732 | inc e 733 | ldi a,[hl] 734 | ld [de],a 735 | inc e 736 | ldi a,[hl] 737 | ld [de],a 738 | inc e 739 | ldi a,[hl] 740 | ld [de],a 741 | inc e 742 | ldi a,[hl] 743 | ld [de],a 744 | ld hl,$001a 745 | add hl,de 746 | ld e,l 747 | ld d,h 748 | pop hl 749 | ld bc,$0014 750 | add hl,bc 751 | pop bc 752 | dec b 753 | jr nZ,.loop 754 | ret 755 | 756 | Function71C: 757 | ld hl,$d865 758 | ld a,[hl] 759 | or a 760 | ret Z 761 | ld [hl],$00 762 | inc hl 763 | ldi a,[hl] 764 | ld h,[hl] 765 | ld l,a 766 | ld de,$ddd0 767 | ld bc,$0020 768 | ld a,[de] 769 | inc e 770 | ld [hl],a 771 | add hl,bc 772 | ld a,[de] 773 | inc e 774 | ld [hl],a 775 | add hl,bc 776 | ld a,[de] 777 | inc e 778 | ld [hl],a 779 | add hl,bc 780 | ld a,[de] 781 | inc e 782 | ld [hl],a 783 | add hl,bc 784 | ld a,[de] 785 | inc e 786 | ld [hl],a 787 | add hl,bc 788 | ld a,[de] 789 | inc e 790 | ld [hl],a 791 | add hl,bc 792 | ld a,[de] 793 | inc e 794 | ld [hl],a 795 | add hl,bc 796 | ld a,[de] 797 | inc e 798 | ld [hl],a 799 | add hl,bc 800 | ld a,[de] 801 | inc e 802 | ld [hl],a 803 | add hl,bc 804 | ld a,[de] 805 | inc e 806 | ld [hl],a 807 | add hl,bc 808 | ld a,[de] 809 | inc e 810 | ld [hl],a 811 | add hl,bc 812 | ld a,[de] 813 | inc e 814 | ld [hl],a 815 | add hl,bc 816 | ld a,[de] 817 | inc e 818 | ld [hl],a 819 | add hl,bc 820 | ld a,[de] 821 | inc e 822 | ld [hl],a 823 | add hl,bc 824 | ld a,[de] 825 | inc e 826 | ld [hl],a 827 | add hl,bc 828 | ld a,[de] 829 | inc e 830 | ld [hl],a 831 | ret 832 | 833 | Function76E: 834 | ld hl,$d86b 835 | ld a,[hl] 836 | or a 837 | ret Z 838 | ld [hl],$00 839 | ld hl,$dde0 840 | ld a,[$d86c] 841 | ld e,a 842 | ld a,[$d86d] 843 | ld d,a 844 | ld a,e 845 | and $e0 846 | ld c,a 847 | ld b,$1f 848 | ld a,$03 849 | .loop 850 | push af 851 | ldi a,[hl] 852 | ld [de],a 853 | inc e 854 | ldi a,[hl] 855 | ld [de],a 856 | ld a,e 857 | inc a 858 | and b 859 | or c 860 | ld e,a 861 | ldi a,[hl] 862 | ld [de],a 863 | inc e 864 | ldi a,[hl] 865 | ld [de],a 866 | ld a,e 867 | inc a 868 | and b 869 | or c 870 | ld e,a 871 | ldi a,[hl] 872 | ld [de],a 873 | inc e 874 | ldi a,[hl] 875 | ld [de],a 876 | ld a,e 877 | inc a 878 | and b 879 | or c 880 | ld e,a 881 | ldi a,[hl] 882 | ld [de],a 883 | inc e 884 | ldi a,[hl] 885 | ld [de],a 886 | ld a,e 887 | inc a 888 | and b 889 | or c 890 | ld e,a 891 | pop af 892 | dec a 893 | jr nZ,.loop 894 | ret 895 | 896 | Function7B7: 897 | reti 898 | 899 | Function7B8: 900 | reti 901 | 902 | Function7B9: 903 | jp $157D 904 | 905 | Function7BC: 906 | push af 907 | .loop1 908 | ld a,[$ff41] 909 | and $03 910 | jr Z,.loop1 911 | .loop2 912 | ld a,[$ff41] 913 | and $03 914 | jr nZ,.loop2 915 | xor a 916 | ld [$ff43],a 917 | ld a,[$df9e] 918 | ld [$ff42],a 919 | ld a,[$df9d] 920 | ld [$ff40],a 921 | ld a,[$df9f] 922 | ld [$ff47],a 923 | pop af 924 | reti 925 | 926 | Function7DD: 927 | or a 928 | ret Z 929 | ld [$cc47],a 930 | push de 931 | push hl 932 | ld a,[$cc47] 933 | ld e,a 934 | ld d,$00 935 | ld hl,$4013 936 | add hl,de 937 | add hl,de 938 | ld a,[$df9a] 939 | bankswitch 940 | ldi a,[hl] 941 | ld h,[hl] 942 | ld l,a 943 | ld a,$01 944 | bankswitch 945 | push hl 946 | inc hl 947 | ld a,[hl] 948 | ld e,a 949 | ld a,[$d936] 950 | ld l,a 951 | ld a,[$d937] 952 | ld h,a 953 | or l 954 | jr Z,.next1 955 | inc hl 956 | ld a,e 957 | cp [hl] 958 | jr nC,.next1 959 | pop hl 960 | jr .next2 961 | .next1 962 | pop hl 963 | ld a,h 964 | ld [$d937],a 965 | ld a,l 966 | ld [$d936],a 967 | .next2 968 | pop hl 969 | pop de 970 | ret 971 | 972 | Function826: 973 | ld a,[$D936] 974 | ld l,a 975 | ld a,[$D937] 976 | ld h,a 977 | or l 978 | call nz,$23C 979 | xor a 980 | ld [$D936],a 981 | ld [$D937],a 982 | ret 983 | 984 | Function83A: 985 | ld a,[$DCBC] 986 | ld b,a 987 | ld c,1 988 | .loop 989 | ld a,c 990 | cp b 991 | push bc 992 | ld [$CC4A],a 993 | call nz,$239 994 | pop bc 995 | inc c 996 | ld a,c 997 | cp $A 998 | jr c,.loop 999 | xor a 1000 | ld [$D920],a 1001 | ret 1002 | 1003 | INCBIN "base1.gb",$855,$CC9-$855 1004 | 1005 | InitializeLives: ; $CC9 1006 | ld bc,$204 1007 | ld a,3 1008 | ld [$C108],a 1009 | xor a 1010 | ld [$DFA0],a 1011 | ld [$DFD4],a 1012 | call $542C 1013 | ret 1014 | 1015 | INCBIN "base1.gb",$CDC,$167E-$CDC 1016 | 1017 | Function167E: ; $167E 1018 | push af 1019 | .loop 1020 | ld a,[hli] 1021 | ld [de],a 1022 | inc de 1023 | dec bc 1024 | ld a,b 1025 | or c 1026 | jr nz,.loop 1027 | pop af 1028 | ret 1029 | 1030 | Function1689: ; $1689 1031 | push af 1032 | .loop 1033 | ld a,[hld] 1034 | ld [de],a 1035 | dec de 1036 | dec bc 1037 | ld a,b 1038 | or c 1039 | jr nz,.loop 1040 | pop af 1041 | ret 1042 | 1043 | INCBIN "base1.gb",$1694,$1AE3-$1694 1044 | 1045 | Function1AE3: ; $1AE3 1046 | ld a,[hli] 1047 | ld c,a 1048 | ld a,[hli] 1049 | ld b,a 1050 | .loop 1051 | push bc 1052 | ld b,0 1053 | push de 1054 | call $18B3 1055 | pop de 1056 | push hl 1057 | ld hl,$0020 1058 | add hl,de 1059 | ld e,l 1060 | ld d,h 1061 | pop hl 1062 | pop bc 1063 | dec b 1064 | jr nz,.loop 1065 | ret 1066 | 1067 | INCBIN "base1.gb",$1AFC,$1B6B-$1AFC 1068 | 1069 | Function1B6B: ; $1B6B 1070 | ld a,4 1071 | bankswitch 1072 | ld de,$8000 1073 | ld hl,Pointer305 1074 | call Function2516 1075 | call Function167E 1076 | ld a,1 1077 | bankswitch 1078 | ret 1079 | 1080 | Function1B88: ; $1B88 1081 | ld a,$07 1082 | bankswitch 1083 | ld hl,$0397 1084 | call $2521 1085 | ld d,h 1086 | ld e,l 1087 | ld hl,$0379 1088 | call $250b 1089 | ld bc,$8080 1090 | call $1e81 1091 | ld hl,$0399 1092 | call $2521 1093 | ld d,h 1094 | ld e,l 1095 | ld hl,$036d 1096 | call $250b 1097 | ld bc,$8360 1098 | call $1e81 1099 | ld hl,$039b 1100 | call $2521 1101 | ld d,h 1102 | ld e,l 1103 | ld hl,$0371 1104 | call $250b 1105 | ld bc,$8580 1106 | call $1e81 1107 | ld hl,$039d 1108 | call $2521 1109 | ld d,h 1110 | ld e,l 1111 | ld hl,$0375 1112 | call $250b 1113 | ld bc,$8820 1114 | call $1e81 1115 | ld hl,$039f 1116 | call $2521 1117 | ld a,$74 1118 | ld [$cc57],a 1119 | ld b,a 1120 | ld a,$78 1121 | ld [$cc58],a 1122 | ld c,a 1123 | ld a,[$df95] 1124 | bit 3,a 1125 | jr nZ,Function1BFF 1126 | Function1BF9: 1127 | ld de,$c010 1128 | call $1c6d 1129 | Function1BFF: 1130 | ld hl,$03a1 1131 | call $2521 1132 | ld a,$24 1133 | ld [$cc51],a 1134 | ld b,a 1135 | ld a,$28 1136 | ld [$cc52],a 1137 | ld c,a 1138 | ld a,[$df95] 1139 | bit 0,a 1140 | jr nZ,Function1C1E 1141 | Function1C18: 1142 | ld de,$c034 1143 | call $1c6d 1144 | Function1C1E: 1145 | ld hl,$03a3 1146 | call $2521 1147 | ld a,$74 1148 | ld [$cc53],a 1149 | ld b,a 1150 | ld a,$28 1151 | ld [$cc54],a 1152 | ld c,a 1153 | ld a,[$df95] 1154 | bit 1,a 1155 | jr nZ,Function1C3D 1156 | Function1C37: 1157 | ld de,$c054 1158 | call $1c6d 1159 | Function1C3D: 1160 | ld hl,$03a5 1161 | call $2521 1162 | ld a,$24 1163 | ld [$cc55],a 1164 | ld b,a 1165 | ld a,$78 1166 | ld [$cc56],a 1167 | ld c,a 1168 | ld a,[$df95] 1169 | bit 2,a 1170 | jr nZ,Function1C5C 1171 | Function1C56: 1172 | ld de,$c070 1173 | call $1c6d 1174 | Function1C5C: 1175 | ld hl,$8fe0 1176 | .loop 1177 | xor a 1178 | ldi [hl],a 1179 | or l 1180 | jr nZ,.loop 1181 | Function1C64: 1182 | ld a,1 1183 | bankswitch 1184 | ret 1185 | 1186 | Function1C6D: ; $1C6D 1187 | ld a,b 1188 | ld [$cc4b],a 1189 | ld [$cc4d],a 1190 | ld a,c 1191 | ld [$cc4c],a 1192 | ld [$cc4e],a 1193 | ldi a,[hl] 1194 | ld c,a 1195 | and $0f 1196 | ld [$cc50],a 1197 | ld a,c 1198 | swap a 1199 | and $0f 1200 | ld [$cc4f],a 1201 | ld a,[$cc50] 1202 | ld c,a 1203 | .loop1 1204 | ld a,[$cc4f] 1205 | ld b,a 1206 | .loop2 1207 | ld a,[$cc4e] 1208 | ld [de],a 1209 | inc de 1210 | ld a,[$cc4d] 1211 | ld [de],a 1212 | inc de 1213 | add $08 1214 | ld [$cc4d],a 1215 | ldi a,[hl] 1216 | ld [de],a 1217 | inc de 1218 | ldi a,[hl] 1219 | ld [de],a 1220 | inc de 1221 | dec b 1222 | ld a,b 1223 | or a 1224 | jr nZ,.loop2 1225 | ld a,[$cc4e] 1226 | add $10 1227 | ld [$cc4e],a 1228 | ld a,[$cc4b] 1229 | ld [$cc4d],a 1230 | dec c 1231 | ld a,c 1232 | or c 1233 | jp nz,.loop1 1234 | .loop3 1235 | ld a,[hl] 1236 | cp $80 1237 | ret Z 1238 | ldi a,[hl] 1239 | ld b,a 1240 | ld a,[$cc4b] 1241 | add b 1242 | ld c,a 1243 | ldi a,[hl] 1244 | ld b,a 1245 | ld a,[$cc4c] 1246 | add b 1247 | ld [de],a 1248 | inc de 1249 | ld a,c 1250 | ld [de],a 1251 | inc de 1252 | ldi a,[hl] 1253 | ld [de],a 1254 | inc de 1255 | ldi a,[hl] 1256 | ld [de],a 1257 | inc de 1258 | jr .loop3 1259 | 1260 | Function1CDE: 1261 | ld a,[$ccfe] 1262 | inc a 1263 | ld [$ccfe],a 1264 | cp $78 1265 | jr c,Function1CF1 1266 | ld a,$2c 1267 | ld [$ccf9],a 1268 | jp $1EBF 1269 | Function1CF1: ; $1CF1 1270 | ld a,[$df8c] 1271 | or a 1272 | jr z,Function1D72 1273 | dec a 1274 | jp z,Function1DC2 1275 | dec a 1276 | jp z,$1E0E 1277 | ld a,[$ccfe] 1278 | and $07 1279 | ret nZ 1280 | ld a,$07 1281 | bankswitch 1282 | ld a,[$ccf6] 1283 | or a 1284 | jr nz,Function1D31 1285 | inc a 1286 | ld [$ccf6],a 1287 | ld a,$02 1288 | ld [$ccff],a 1289 | ld hl,$039f 1290 | call $1e6d 1291 | call $2022 1292 | call $1c6d 1293 | ld a,$01 1294 | bankswitch 1295 | ret 1296 | Function1D31: ; $1D31 1297 | dec a 1298 | jr nz,Function1D53 1299 | ld a,$02 1300 | ld [$ccf6],a 1301 | ld a,$03 1302 | ld [$ccff],a 1303 | ld hl,$039f 1304 | call $1e6d 1305 | call $2022 1306 | call $1c6d 1307 | ld a,$01 1308 | bankswitch 1309 | ret 1310 | Function1D53: ; $1D53 1311 | ld a,$01 1312 | ld [$ccf6],a 1313 | ld a,$04 1314 | ld [$ccff],a 1315 | ld hl,$039f 1316 | call $1e6d 1317 | call $2022 1318 | call $1c6d 1319 | ld a,$01 1320 | bankswitch 1321 | ret 1322 | Function1D72: ; $1D72 1323 | ld a,[$ccfe] 1324 | and $07 1325 | ret nZ 1326 | ld a,$07 1327 | bankswitch 1328 | ld a,[$ccf6] 1329 | or a 1330 | jr nz,Function1DA4 1331 | inc a 1332 | ld [$ccf6],a 1333 | ld a,$02 1334 | ld [$ccff],a 1335 | ld hl,$03a1 1336 | call $1e6d 1337 | call $202e 1338 | call $1c6d 1339 | ld a,$01 1340 | bankswitch 1341 | ret 1342 | Function1DA4: ; $1DA4 1343 | xor a 1344 | ld [$ccf6],a 1345 | ld a,$01 1346 | ld [$ccff],a 1347 | ld hl,$03a1 1348 | call $1e6d 1349 | call $202e 1350 | call $1c6d 1351 | ld a,$01 1352 | bankswitch 1353 | ret 1354 | Function1DC2: ; $1DC2 1355 | ld a,[$ccfe] 1356 | and $07 1357 | ret nZ 1358 | ld a,$07 1359 | bankswitch 1360 | ld a,[$ccf6] 1361 | or a 1362 | jr nz,Function1DF4 1363 | inc a 1364 | ld [$ccf6],a 1365 | ld a,$01 1366 | ld [$ccff],a 1367 | ld hl,$03a3 1368 | call $1e6d 1369 | call $203a 1370 | call $1c6d 1371 | ld a,$01 1372 | bankswitch 1373 | ret 1374 | Function1DF4: ; $1DF4 1375 | ld a,$02 1376 | ld [$ccff],a 1377 | ld hl,$03a3 1378 | call $1e6d 1379 | call $203a 1380 | call $1c6d 1381 | ld a,$01 1382 | bankswitch 1383 | ret 1384 | Function1E0E: ; $1E0E 1385 | ld a,[$ccfe] 1386 | and $07 1387 | ret nZ 1388 | ld a,$07 1389 | bankswitch 1390 | ld a,[$ccf6] 1391 | or a 1392 | jr nz,Function1E40 1393 | inc a 1394 | ld [$ccf6],a 1395 | ld a,$02 1396 | ld [$ccff],a 1397 | ld hl,$03a5 1398 | call $1e6d 1399 | call $2046 1400 | call $1c6d 1401 | ld a,$01 1402 | bankswitch 1403 | ret 1404 | Function1E40: ; $1E40 1405 | ld a,$03 1406 | ld [$ccff],a 1407 | ld hl,$03a5 1408 | call $1e6d 1409 | call $2046 1410 | call $1c6d 1411 | ld a,$01 1412 | bankswitch 1413 | ret 1414 | 1415 | Function1E5A: ; $1E5A 1416 | ld hl,$C000 1417 | .loop1 1418 | ld a,[de] 1419 | ld [hli],a 1420 | inc de 1421 | dec b 1422 | ld a,b 1423 | or a 1424 | jr nz,.loop1 1425 | .loop2 1426 | xor a 1427 | ld [hli],a 1428 | ld a,l 1429 | cp $A0 1430 | jr c,.loop2 1431 | ret 1432 | 1433 | Function1E6D: ; $1E6D 1434 | ld a,[hli] 1435 | ld h,[hl] 1436 | ld l,a 1437 | ld a,[hli] 1438 | ld h,[hl] 1439 | ld l,a 1440 | ld a,[$CCFF] 1441 | add a 1442 | add l 1443 | ld l,a 1444 | ld a,0 1445 | adc h 1446 | ld h,a 1447 | ld a,[hli] 1448 | ld h,[hl] 1449 | ld l,a 1450 | ret 1451 | 1452 | Function1E81: ; $1E81 1453 | ld a,[de] 1454 | ld [$ccf9],a 1455 | inc de 1456 | Function1E86: 1457 | ld a,[de] 1458 | cp $ff 1459 | jr Z,Function1EB1 1460 | push hl 1461 | push de 1462 | ld e,a 1463 | swap a 1464 | and $0f 1465 | ld d,a 1466 | ld a,e 1467 | and $0f 1468 | swap a 1469 | ld e,a 1470 | add hl,de 1471 | ld d,$10 1472 | Function1E9C: 1473 | ld a,[hli] 1474 | ld [bc],a 1475 | inc bc 1476 | dec d 1477 | ld a,d 1478 | or a 1479 | jr nZ,Function1E9C 1480 | pop de 1481 | pop hl 1482 | inc de 1483 | Function1EA7: 1484 | ld a,[$ccf9] 1485 | dec a 1486 | ret Z 1487 | ld [$ccf9],a 1488 | jr Function1E86 1489 | Function1EB1: 1490 | push de 1491 | ld d,$10 1492 | Function1EB4: 1493 | xor a 1494 | ld [bc],a 1495 | inc bc 1496 | dec d 1497 | or d 1498 | jr nZ,Function1EB4 1499 | pop de 1500 | inc de 1501 | jr Function1EA7 1502 | 1503 | Function1EBF: 1504 | ld a,7 1505 | bankswitch 1506 | ld a,[$df8c] 1507 | or a 1508 | jp Z,$1f29 1509 | dec a 1510 | jp Z,$1f7c 1511 | dec a 1512 | jp Z,$1fcf 1513 | ld a,[$ccf9] 1514 | cp $2c 1515 | jr Z,Function1F0F 1516 | ret nC 1517 | ld hl,$03a9 1518 | call $2521 1519 | call $2052 1520 | ld a,[$cc57] 1521 | dec a 1522 | ld [$cc57],a 1523 | ld a,[$cc58] 1524 | add e 1525 | ld [$cc58],a 1526 | ld a,$05 1527 | ld [$ccff],a 1528 | ld hl,$039f 1529 | call $1e6d 1530 | call $2022 1531 | call $1c6d 1532 | ld a,$01 1533 | bankswitch 1534 | ret 1535 | Function1F0F: 1536 | ld a,$01 1537 | ld [$ccff],a 1538 | ld hl,$039f 1539 | call $1e6d 1540 | call $2022 1541 | call $1c6d 1542 | ld a,$01 1543 | bankswitch 1544 | ret 1545 | 1546 | Function1F29: 1547 | ld a,[$ccf9] 1548 | cp $2c 1549 | jr Z,Function1F62 1550 | ret nC 1551 | ld hl,$03a7 1552 | call $2521 1553 | call $2052 1554 | ld a,[$cc51] 1555 | inc a 1556 | ld [$cc51],a 1557 | ld a,[$cc52] 1558 | add e 1559 | ld [$cc52],a 1560 | ld a,$03 1561 | ld [$ccff],a 1562 | ld hl,$03a1 1563 | call $1e6d 1564 | call $202e 1565 | call $1c6d 1566 | ld a,$01 1567 | bankswitch 1568 | ret 1569 | Function1F62: 1570 | ld a,$01 1571 | ld [$ccff],a 1572 | ld hl,$03a1 1573 | call $1e6d 1574 | call $202e 1575 | call $1c6d 1576 | ld a,$01 1577 | bankswitch 1578 | ret 1579 | 1580 | Function1F7C: 1581 | ld a,[$ccf9] 1582 | cp $2c 1583 | jr Z,Function1FB5 1584 | ret nC 1585 | ld hl,$03a7 1586 | call $2521 1587 | call $2052 1588 | ld a,[$cc53] 1589 | dec a 1590 | ld [$cc53],a 1591 | ld a,[$cc54] 1592 | add e 1593 | ld [$cc54],a 1594 | ld a,$03 1595 | ld [$ccff],a 1596 | ld hl,$03a3 1597 | call $1e6d 1598 | call $203a 1599 | call $1c6d 1600 | ld a,$01 1601 | bankswitch 1602 | ret 1603 | Function1FB5: 1604 | ld a,$00 1605 | ld [$ccff],a 1606 | ld hl,$03a3 1607 | call $1e6d 1608 | call $203a 1609 | call $1c6d 1610 | ld a,$01 1611 | bankswitch 1612 | ret 1613 | 1614 | Function1FCF: 1615 | ld a,[$ccf9] 1616 | cp $2c 1617 | jr Z,Function2008 1618 | ret nC 1619 | ld hl,$03a9 1620 | call $2521 1621 | call $2052 1622 | ld a,[$cc55] 1623 | inc a 1624 | ld [$cc55],a 1625 | ld a,[$cc56] 1626 | add e 1627 | ld [$cc56],a 1628 | ld a,$04 1629 | ld [$ccff],a 1630 | ld hl,$03a5 1631 | call $1e6d 1632 | call $2046 1633 | call $1c6d 1634 | ld a,$01 1635 | ld [$df99],a 1636 | ld [$2100],a 1637 | ret 1638 | Function2008: 1639 | ld a,$01 1640 | ld [$ccff],a 1641 | ld hl,$03a5 1642 | call $1e6d 1643 | call $2046 1644 | call $1c6d 1645 | ld a,$01 1646 | ld [$df99],a 1647 | ld [$2100],a 1648 | ret 1649 | 1650 | Function2022: 1651 | ld a,[$CC57] 1652 | ld b,a 1653 | ld a,[$CC58] 1654 | ld c,a 1655 | ld de,$C000 1656 | ret 1657 | 1658 | Function202E: 1659 | ld a,[$CC51] 1660 | ld b,a 1661 | ld a,[$CC52] 1662 | ld c,a 1663 | ld de,$C000 1664 | ret 1665 | 1666 | Function203A: 1667 | ld a,[$CC53] 1668 | ld b,a 1669 | ld a,[$CC54] 1670 | ld c,a 1671 | ld de,$C000 1672 | ret 1673 | 1674 | Function2046: 1675 | ld a,[$CC55] 1676 | ld b,a 1677 | ld a,[$CC56] 1678 | ld c,a 1679 | ld de,$C000 1680 | ret 1681 | 1682 | Function2052: 1683 | ld a,[$CCF9] 1684 | add l 1685 | ld l,a 1686 | ld a,0 1687 | adc h 1688 | ld h,a 1689 | ld a,[hl] 1690 | or a 1691 | jr z,.next 1692 | ld e,a 1693 | ld a,[$CCF8] 1694 | ld h,a 1695 | ld l,e 1696 | call $2075 1697 | ld a,h 1698 | ld [$CCF8],a 1699 | ld e,l 1700 | .next 1701 | ld a,[$CCF9] 1702 | inc a 1703 | ld [$CCF9],a 1704 | ret 1705 | 1706 | Function2075: 1707 | ld a,l 1708 | and $80 1709 | jr Z,.next 1710 | xor a 1711 | sub l 1712 | add h 1713 | ld l,a 1714 | and $0f 1715 | ld h,a 1716 | ld a,l 1717 | swap a 1718 | and $0f 1719 | cpl 1720 | inc a 1721 | ld l,a 1722 | ret 1723 | .next 1724 | ld a,l 1725 | add h 1726 | ld l,a 1727 | and $0f 1728 | ld h,a 1729 | ld a,l 1730 | swap a 1731 | and $0f 1732 | ld l,a 1733 | ret 1734 | 1735 | Function2097: 1736 | ld a,[$ccf9] 1737 | cp $09 1738 | ret nC 1739 | ld de,$99c7 1740 | ld b,$00 1741 | ld c,a 1742 | ld a,[$df8c] 1743 | or a 1744 | jr Z,.next1 1745 | dec a 1746 | jr Z,.next2 1747 | dec a 1748 | jr Z,.next3 1749 | ld hl,.fireman 1750 | jr .next4 1751 | .next1 1752 | ld hl,.cutman 1753 | jr .next4 1754 | .next2 1755 | ld hl,.iceman 1756 | jr .next4 1757 | .next3 1758 | ld hl,.elecman 1759 | .next4 1760 | ld a,c 1761 | add hl,bc 1762 | add e 1763 | ld e,a 1764 | ld a,[hl] 1765 | or a 1766 | ret Z 1767 | ld [de],a 1768 | ret 1769 | 1770 | .cutman 1771 | db "CUTMAN",0,0,0,0 1772 | .iceman 1773 | db "ICEMAN",0,0,0,0 1774 | .elecman 1775 | db "ELECMAN",0,0,0 1776 | .fireman 1777 | db "FIREMAN",0,0,0 1778 | 1779 | Function20F2: 1780 | ld a,$06 1781 | bankswitch 1782 | ld de,$8a00 1783 | ld hl,$0345 1784 | call $2516 1785 | call $167e 1786 | ld de,$9000 1787 | ld hl,$0357 1788 | call $2516 1789 | call $167e 1790 | ld de,$8800 1791 | ld hl,$0359 1792 | call $2516 1793 | call $167e 1794 | ld de,$9800 1795 | ld hl,$035b 1796 | call $2516 1797 | call $167e 1798 | ld a,$01 1799 | bankswitch 1800 | ret 1801 | 1802 | Function2133: 1803 | ld a,[$ccf7] 1804 | ld de,$988d 1805 | ld b,$00 1806 | ld c,a 1807 | ld hl,$21c7 1808 | add hl,bc 1809 | add e 1810 | ld e,a 1811 | ld a,[hl] 1812 | or a 1813 | jr Z,.next 1814 | ld [de],a 1815 | ld a,[$ccf7] 1816 | inc a 1817 | ld [$ccf7],a 1818 | ret 1819 | .next 1820 | xor a 1821 | ld [$ccf7],a 1822 | ld a,[$ccfc] 1823 | inc a 1824 | ld [$ccfc],a 1825 | ret 1826 | 1827 | Function215B: 1828 | ld a,[$DFC8] 1829 | or a 1830 | jr nz,.next 1831 | ld a,[$DF8C] 1832 | ret 1833 | .next 1834 | ld a,[$DF97] 1835 | add 4 1836 | ret 1837 | 1838 | Function216B: 1839 | call $215b 1840 | dec a 1841 | sla a 1842 | ld b,$00 1843 | ld c,a 1844 | ld hl,Pointers21A3 1845 | add hl,bc 1846 | ldi a,[hl] 1847 | ld h,[hl] 1848 | ld l,a 1849 | ld a,[$ccf7] 1850 | ld de,$98cd 1851 | ld b,$00 1852 | ld c,a 1853 | jp $213f 1854 | 1855 | Function2187: 1856 | call $215b 1857 | dec a 1858 | sla a 1859 | ld b,$00 1860 | ld c,a 1861 | ld hl,$21b5 1862 | add hl,bc 1863 | ldi a,[hl] 1864 | ld h,[hl] 1865 | ld l,a 1866 | ld a,[$ccf7] 1867 | ld de,$98ed 1868 | ld b,$00 1869 | ld c,a 1870 | jp $213f 1871 | 1872 | Pointers21A3: 1873 | dw $21CF 1874 | dw $21DE 1875 | dw $21EA 1876 | dw $21F7 1877 | dw $2202 1878 | dw $221F 1879 | dw $2212 1880 | dw $222B 1881 | dw $2237 1882 | dw $21D7 1883 | dw $21E2 1884 | dw $21F2 1885 | dw $21FC 1886 | dw $2208 1887 | dw $2226 1888 | dw $2217 1889 | dw $2232 1890 | dw $223E 1891 | 1892 | INCBIN "base1.gb",$21C7,$2245-$21C7 1893 | 1894 | Function2245: 1895 | ld a,6 1896 | bankswitch 1897 | ld de,$9000 1898 | ld hl,Pointer35D 1899 | call $2516 1900 | call $167E 1901 | ld de,$8800 1902 | ld hl,$35F 1903 | call $2516 1904 | call $167E 1905 | ld de,$9800 1906 | ld hl,$361 1907 | call $2521 1908 | call $22F5 1909 | ld a,1 1910 | bankswitch 1911 | ret 1912 | 1913 | Function227A: 1914 | ld a,6 1915 | bankswitch 1916 | ld de,$9000 1917 | ld hl,Pointer363 1918 | call $2516 1919 | call $167E 1920 | ld de,$9800 1921 | ld hl,$365 1922 | call $2521 1923 | call $22F5 1924 | ld a,1 1925 | bankswitch 1926 | ret 1927 | 1928 | Function22A3: 1929 | ld a,6 1930 | bankswitch 1931 | ld de,$9000 1932 | ld hl,Pointer367 1933 | call $2516 1934 | call $167E 1935 | ld de,$9800 1936 | ld hl,$369 1937 | call $2521 1938 | call $22F5 1939 | ld a,1 1940 | bankswitch 1941 | ret 1942 | 1943 | Function22CC: 1944 | ld a,6 1945 | bankswitch 1946 | ld de,$9000 1947 | ld hl,Pointer367 1948 | call $2516 1949 | call $167E 1950 | ld de,$9800 1951 | ld hl,$36B 1952 | call $2521 1953 | call $22F5 1954 | ld a,1 1955 | bankswitch 1956 | ret 1957 | 1958 | Function22F5: 1959 | ld c,$12 1960 | .loop1 1961 | ld b,$14 1962 | .loop2 1963 | ld a,[hli] 1964 | ld [de],a 1965 | inc de 1966 | dec b 1967 | ld a,b 1968 | or a 1969 | jr nz,.loop2 1970 | ld a,$C 1971 | add e 1972 | ld e,a 1973 | ld a,0 1974 | adc d 1975 | ld d,a 1976 | dec c 1977 | ld a,c 1978 | or a 1979 | jr nz,.loop1 1980 | ret 1981 | 1982 | Function230F: ; $230F 1983 | ld a,BANK(_MegaManSpriteGFX) 1984 | bankswitch 1985 | 1986 | ; load Mega Man's sprite into vram 1987 | ld de,$8000 1988 | ld hl,__MegaManSpriteGFX 1989 | call Function2516 1990 | call Function167E 1991 | 1992 | ; load item pickup sprites into vram 1993 | ld de,$8800 1994 | ld hl,__ItemPickupSpriteGFX 1995 | call Function2516 1996 | call Function167E 1997 | 1998 | ld a,1 1999 | bankswitch 2000 | ret 2001 | 2002 | Function2338: ; $2338 2003 | ld a,BANK(_HealthBarGFX) 2004 | bankswitch 2005 | 2006 | ; load Mega Man's health bar graphics into vram 2007 | ld de,$9650 2008 | ld hl,__HealthBarGFX 2009 | call Function2516 2010 | call Function167E 2011 | 2012 | ; load Mega Man's live counter 7-segment graphics into vram 2013 | ld de,$9500 2014 | ld hl,__SevenSegmentGFX 2015 | call Function2516 2016 | call Function167E 2017 | 2018 | ld a,1 2019 | bankswitch 2020 | ret 2021 | 2022 | Function2361: ; $2361 2023 | ld a,BANK(_UnknownBulletGFX) 2024 | bankswitch 2025 | 2026 | ; load current weapon bullet into vram 2027 | ld a,[$DFA0] ; current weapon 2028 | ld hl,.bullets 2029 | call $1968 2030 | call Function2524 2031 | ld a,[hli] 2032 | swap a 2033 | ld b,a 2034 | and $F0 2035 | ld c,a 2036 | ld a,b 2037 | and $F 2038 | ld b,a 2039 | ld a,[hli] 2040 | ld h,[hl] 2041 | ld l,a 2042 | ld de,$8720 2043 | call $18B3 2044 | 2045 | ld a,1 2046 | bankswitch 2047 | ret 2048 | 2049 | .bullets 2050 | dw __UnknownBulletGFX 2051 | dw __RollingCutterGFX 2052 | dw __ThunderBeamGFX 2053 | dw __IceSlasherGFX 2054 | dw __FireStormGFX 2055 | dw __CarryGFX 2056 | dw __AtomicFireGFX 2057 | dw __TimeStopperGFX 2058 | dw __QuickBoomerangGFX 2059 | dw __BubbleLeadGFX 2060 | dw __MirrorBusterGFX 2061 | 2062 | INCBIN "base1.gb",$23A8,$2516-$23A8 2063 | 2064 | Function2516: ; $2516 2065 | call Function2524 2066 | ld a,[hli] 2067 | ld c,a 2068 | ld a,[hli] 2069 | ld b,a 2070 | ld a,[hli] 2071 | ld h,[hl] 2072 | ld l,a 2073 | ret 2074 | 2075 | Function2521: ; $2521 2076 | ; copies the pointer pointed to by hl into hl 2077 | ld a,[hli] 2078 | ld h,[hl] 2079 | ld l,a 2080 | ; now hl contains that pointer 2081 | Function2524: ; $2524 2082 | ld a,[hli] 2083 | ld h,[hl] 2084 | ld l,a 2085 | ld a,[hli] 2086 | ld h,[hl] 2087 | ld l,a 2088 | ret 2089 | 2090 | INCBIN "base1.gb",$252B,$2C37-$252B 2091 | 2092 | Function2C37: ; $2C37 2093 | call $2E6A 2094 | ld a,[$DF86] 2095 | bit 0,a 2096 | ld de,$CF36 2097 | jr nz,.next 2098 | ld de,$CF5E 2099 | .next 2100 | ld b,$1A 2101 | ld c,$E 2102 | ld a,[$CE58] 2103 | or a 2104 | jr z,.next2 2105 | ld b,$28 2106 | ld c,0 2107 | ld hl,$FFF2 2108 | add hl,de 2109 | ld e,l 2110 | ld d,h 2111 | .next2 2112 | ld h,$CF 2113 | ld l,c 2114 | ld a,[de] 2115 | inc e 2116 | ld [hl],a 2117 | ld h,$C0 2118 | ld l,a 2119 | ld [hl],$A0 2120 | inc c 2121 | dec b 2122 | jr nz,.next2 2123 | ret 2124 | 2125 | INCBIN "base1.gb",$2C6B,$3496-$2C6B 2126 | 2127 | Function3496: ; $3496 2128 | push de 2129 | rr d 2130 | rr e 2131 | ld a,e 2132 | rr d 2133 | rr e 2134 | and $F 2135 | ld d,a 2136 | ld a,e 2137 | and $F0 2138 | or d 2139 | ld e,a 2140 | ld d,$DE 2141 | ld a,[hli] 2142 | ld [de],a 2143 | pop de 2144 | push hl 2145 | ld l,a 2146 | ld h,0 2147 | add hl,hl 2148 | add hl,hl 2149 | ld a,[$D8C4] 2150 | ld c,a 2151 | ld a,[$D8C5] 2152 | ld b,a 2153 | add hl,bc 2154 | ld a,[hli] 2155 | ld [de],a 2156 | push de 2157 | ld a,e 2158 | add $20 2159 | ld e,a 2160 | jr nc,.next 2161 | inc d 2162 | .next 2163 | ld c,e 2164 | ld b,d 2165 | ld a,[hli] 2166 | ld [de],a 2167 | pop de 2168 | inc e 2169 | ld a,[hli] 2170 | ld [de],a 2171 | inc c 2172 | ld a,[hli] 2173 | ld [bc],a 2174 | pop hl 2175 | ret 2176 | 2177 | INCBIN "base1.gb",$34D3,$3979-$34D3 2178 | 2179 | freespace $3979 2180 | 2181 | SECTION "bank1",ROMX,BANK[$1] 2182 | Function4000: 2183 | call Function411E 2184 | call Function412F 2185 | ret 2186 | 2187 | Data4007: 2188 | INCBIN "base1.gb",$4007,$40B7-$4007 2189 | 2190 | Function40B7: 2191 | call Function411E 2192 | call Function412F 2193 | xor a 2194 | ld [$C201],a 2195 | ld [$C200],a 2196 | ld a,[$DFA0] 2197 | swap a 2198 | and $F0 2199 | ld l,a 2200 | ld h,0 2201 | ld de,Data4007 2202 | add hl,de 2203 | ld a,[hli] 2204 | ld [$C22B],a 2205 | ld a,[hli] 2206 | ld [$C22C],a 2207 | ld a,[hli] 2208 | ld [$C22D],a 2209 | ld de,$C203 2210 | ld a,[hli] 2211 | ld [de],a 2212 | ld b,5 2213 | .loop 2214 | inc e 2215 | ld [de],a 2216 | ld a,[hli] 2217 | dec b 2218 | jr nz,.loop 2219 | dec hl 2220 | ld a,[hli] 2221 | ld [$C22E],a 2222 | ld a,[hli] 2223 | ld [$C235],a 2224 | ld de,$C22F 2225 | ld a,$C3 ; jp? 2226 | ld [de],a 2227 | inc e 2228 | ld a,[hli] 2229 | ld [de],a 2230 | inc e 2231 | ld a,[hli] 2232 | ld [de],a 2233 | inc e 2234 | ld a,$C3 ; jp? 2235 | ld [de],a 2236 | inc e 2237 | ld a,[hli] 2238 | ld [de],a 2239 | inc e 2240 | ld a,[hli] 2241 | ld [de],a 2242 | ld b,3 2243 | ld hl,$C239 2244 | .loop2 2245 | ld [hl],0 2246 | ld a,$20 2247 | add a,l 2248 | ld l,a 2249 | dec b 2250 | jr nz,.loop2 2251 | call $4fca 2252 | jp $536c 2253 | 2254 | Function411E: 2255 | ld de,Function4140 2256 | ld a,e 2257 | ld [$C0AB],a 2258 | ld a,d 2259 | ld [$C0AC],a 2260 | ld a,$C3 ; jp? 2261 | ld [$C0AA],a 2262 | ret 2263 | 2264 | Function412F: 2265 | ld de,$42ae 2266 | ld a,e 2267 | ld [$C0AE],a 2268 | ld a,d 2269 | ld [$C0AF],a 2270 | ld a,$C3 ; jp? 2271 | ld [$C0AD],a 2272 | ret 2273 | 2274 | Function4140: 2275 | ld hl,$c201 2276 | ld a,[hl] 2277 | or a 2278 | jr z,.next 2279 | dec [hl] 2280 | .next 2281 | ld a,[$DFB1] 2282 | and $53 2283 | ret nz 2284 | ld a,[$DFA0] 2285 | cp 8 2286 | jr nz,.next2 2287 | ld a,[$D840] 2288 | jr .next3 2289 | .next2 2290 | ld a,[$D83F] 2291 | .next3 2292 | bit 1,a 2293 | ret z 2294 | ld a,[$C200] 2295 | ld l,$2c 2296 | cp [hl] 2297 | ret nc 2298 | ld a,[$DFA0] 2299 | or a 2300 | jr z,.next4 2301 | ld de,$DFA3 2302 | add a,e 2303 | ld e,a 2304 | ld a,0 2305 | adc a,d 2306 | ld d,a 2307 | ld a,[de] 2308 | or a 2309 | ret z 2310 | .next4 2311 | ld l,1 2312 | ld a,[hl] 2313 | cp 8 2314 | ret nc 2315 | ld [hl],$10 2316 | call $41f1 2317 | call $43e8 2318 | call $41b8 2319 | ld a,[$DFA0] 2320 | jp $c22f 2321 | 2322 | INCBIN "base1.gb",$4190,$574E-$4190 2323 | 2324 | ; ----- 2325 | 2326 | Function574E: 2327 | ld a,9 2328 | add c 2329 | ld l,a 2330 | ld a,[hl] 2331 | dec a 2332 | jr z,.life 2333 | dec a 2334 | jr z,.bighealth 2335 | dec a 2336 | jr z,.littlehealth 2337 | dec a 2338 | jr z,.bigweap 2339 | jr .littleweap 2340 | 2341 | .life 2342 | ld a,16 2343 | call Function3CD 2344 | ld hl,$C108 2345 | ld a,[hl] 2346 | inc a 2347 | cp 10 2348 | jr c,.nextlife 2349 | ld a,10 ; maximum of 9 extra lives 2350 | .nextlife 2351 | ld [hl],a 2352 | ret 2353 | 2354 | .bighealth 2355 | ld d,10 2356 | jr .healaddress 2357 | .littlehealth 2358 | ld d,2 2359 | .healaddress 2360 | ld hl,$DFA3 2361 | jr .heal 2362 | 2363 | .bigweap 2364 | ld d,10 2365 | jr .weapaddress 2366 | .littleweap 2367 | ld d,2 2368 | .weapaddress 2369 | ld a,[$DFA0] ; current weapon 2370 | or a 2371 | ret z ; can't heal the buster 2372 | add $A3 ; $DFA3 & $FF??? 2373 | ld l,a 2374 | ld h,$DF ; $DFA3 >> 8??? 2375 | .heal 2376 | ld a,d 2377 | ld [$D4C1],a 2378 | ld a,l 2379 | ld [$D4BF],a 2380 | ld a,h 2381 | ld [$D4C0],a 2382 | ld hl,$DFB1 2383 | set 1,[hl] 2384 | jr Function57AB 2385 | 2386 | Function57A1: 2387 | ld hl,$D4BE 2388 | inc [hl] 2389 | ld a,[hl] 2390 | cp 4 2391 | ret c 2392 | xor a 2393 | ld [hl],a 2394 | Function57AB: 2395 | ; at this point: 2396 | ; - $D4C1 contains how many points to heal 2397 | ; - $D4BF,C0 contains a pointer to which meter to heal 2398 | ; - $D4BE contains a value from 0 to 3(???) 2399 | ld hl,$D4C1 2400 | ld a,[hl] 2401 | or a 2402 | jr z,.nomoreheal 2403 | dec [hl] 2404 | ld a,[$D4BF] 2405 | ld l,a 2406 | ld a,[$D4C0] 2407 | ld h,a 2408 | ld a,[hl] 2409 | cp $98 2410 | jr nc,.nomoreheal 2411 | ld a,$12 2412 | call Function3CD 2413 | ld a,8 2414 | add [hl] 2415 | ld [hl],a 2416 | cp $98 2417 | ret c 2418 | ld [hl],$98 2419 | ret 2420 | .nomoreheal 2421 | ld hl,$DFB1 2422 | res 1,[hl] 2423 | ret 2424 | 2425 | ; ----- 2426 | 2427 | INCBIN "base1.gb",$57D5,$60AF-$57D5 2428 | 2429 | Function60AF: ; $1:60AF 2430 | di 2431 | xor a 2432 | ld [$FF41],a 2433 | ld a,[$DF8A] 2434 | and $7B 2435 | ld [$DF8A],a 2436 | call $15EA 2437 | call $166E 2438 | call $1A7D 2439 | call Function610A 2440 | ld a,$E4 2441 | ld [$DF9C],a 2442 | ld a,$A 2443 | ld [$DF9A],a 2444 | ld a,$2A 2445 | call Function3CD 2446 | xor a 2447 | ld [$FF0F],a 2448 | ld a,1 2449 | ld [$FFFF],a 2450 | call $1654 2451 | ei 2452 | xor a 2453 | ld [$CC00],a 2454 | ld b,$78 2455 | .loop 2456 | push bc 2457 | call $1618 2458 | call $157D 2459 | pop bc 2460 | dec b 2461 | jr nz,.loop 2462 | .loop2 2463 | call $1618 2464 | call $157D 2465 | call $612A 2466 | ld a,[$FF8A] 2467 | bit 3,a 2468 | jr z,.loop2 2469 | call $248 2470 | ld a,2 2471 | ld [$DF9A],a 2472 | ret 2473 | 2474 | Function610A: ; $1:610A 2475 | ld a,$E4 2476 | ld [$FF48],a 2477 | ld hl,$611A 2478 | ld de,$8000 2479 | ld bc,EndTitleScreenArrowTile-TitleScreenArrowTile 2480 | jp Function167E 2481 | 2482 | TitleScreenArrowTile: ; $1:611A 2483 | db $00,$00,$40,$40,$60,$60,$70,$50,$78,$48,$70,$50,$60,$60,$40,$40 2484 | EndTitleScreenArrowTile 2485 | 2486 | INCBIN "base1.gb",$612A,$738D-$612A 2487 | 2488 | freespace $738D 2489 | 2490 | SECTION "bank2",ROMX,BANK[$2] 2491 | 2492 | Function8000: ; $2:4000 2493 | jp $4082 2494 | Function8003: ; $2:4003 2495 | jp $4323 2496 | Function8006: ; $2:4006 2497 | jp $40DD 2498 | Function8009: ; $2:4009 2499 | jp $40DF 2500 | Function800C: ; $2:400C 2501 | jp $40D3 2502 | Function800F: ; $2:400F 2503 | jp $43F3 2504 | Function8012: ; $2:8012 2505 | jp $4317 2506 | 2507 | Pointers8015: ; $2:8015 2508 | dw $5054 2509 | dw $5096 2510 | dw $50E6 2511 | dw $5109 2512 | dw $5126 2513 | dw $5A87 2514 | dw $5143 2515 | dw $5181 2516 | dw $51C7 2517 | dw $51FD 2518 | dw $521A 2519 | dw $5239 2520 | dw $525A 2521 | dw $528C 2522 | dw $531E 2523 | dw $5353 2524 | dw $5411 2525 | dw $5162 2526 | dw $53F4 2527 | dw $5277 2528 | dw $5BEA 2529 | dw $6691 2530 | dw $6228 2531 | dw $6BAB 2532 | dw $5500 2533 | dw $5898 2534 | dw $59EA 2535 | dw $5AAE 2536 | dw $5AD1 2537 | dw $5A5E 2538 | dw $5A24 2539 | dw $5088 2540 | dw $5B0E 2541 | dw $6F41 2542 | dw $744D 2543 | dw $74F8 2544 | dw $74F8 2545 | dw $77DF 2546 | dw $77DF 2547 | dw $78E7 2548 | dw $78E7 2549 | dw $78E7 2550 | dw $5B31 2551 | dw $5B52 2552 | dw $78E7 2553 | dw $78E7 2554 | dw $5B63 2555 | dw $5B90 2556 | dw $5BBD 2557 | 2558 | Function8077: ; $2:4077 2559 | push af 2560 | .loop 2561 | ld a,[hld] 2562 | ld [de],a 2563 | dec de 2564 | dec bc 2565 | ld a,b 2566 | or c 2567 | jr nz,.loop 2568 | pop af 2569 | ret 2570 | 2571 | INCBIN "base1.gb",$8082,$BCA2-$8082 2572 | 2573 | freespace $BCA2 2574 | 2575 | SECTION "bank3",ROMX,BANK[$3] 2576 | FunctionC000: 2577 | jp $55db 2578 | 2579 | FunctionC003: 2580 | jp $57cf 2581 | 2582 | FunctionC006: 2583 | jp $5982 2584 | 2585 | FunctionC009: 2586 | jp $5b5f 2587 | 2588 | FunctionC00C: 2589 | jp $5cac 2590 | 2591 | FunctionC00F: 2592 | jp $6b49 2593 | 2594 | FunctionC012: 2595 | jp $6d19 2596 | 2597 | FunctionC015: 2598 | jp $6de7 2599 | 2600 | FunctionC018: 2601 | jp $6ed9 2602 | 2603 | FunctionC01B: 2604 | jp $72e1 2605 | 2606 | FunctionC01E: 2607 | jp $7491 2608 | 2609 | FunctionC021: 2610 | jp $757b 2611 | 2612 | FunctionC024: 2613 | jp $4744 2614 | 2615 | FunctionC027: 2616 | jp $52cd 2617 | 2618 | FunctionC02A: 2619 | jp $4d5b 2620 | 2621 | FunctionC02D: 2622 | jp $512c 2623 | 2624 | FunctionC030: 2625 | jp $5e79 2626 | 2627 | FunctionC033: 2628 | jp $62cc 2629 | 2630 | FunctionC036: 2631 | jp $6537 2632 | 2633 | FunctionC039: 2634 | jp $69a3 2635 | 2636 | FunctionC03C: 2637 | jp $769f 2638 | 2639 | FunctionC03F: 2640 | jp $796b 2641 | 2642 | INCBIN "base1.gb",$C042,$FBE5-$C042 2643 | 2644 | freespace $FBE5 2645 | 2646 | SECTION "bank4",ROMX,BANK[$4] 2647 | 2648 | _MegaManSpriteGFX: 2649 | dw MegaManSpriteGFX 2650 | _ItemPickupSpriteGFX: 2651 | dw ItemPickupSpriteGFX 2652 | _UnknownBulletGFX: 2653 | dw UnknownBulletGFX 2654 | _RollingCutterGFX: 2655 | dw RollingCutterGFX 2656 | _ThunderBeamGFX: 2657 | dw ThunderBeamGFX 2658 | _IceSlasherGFX: 2659 | dw IceSlasherGFX 2660 | _FireStormGFX: 2661 | dw FireStormGFX 2662 | _CarryGFX: 2663 | dw CarryGFX 2664 | _AtomicFireGFX: 2665 | dw AtomicFireGFX 2666 | _TimeStopperGFX: 2667 | dw TimeStopperGFX 2668 | _QuickBoomerangGFX: 2669 | dw QuickBoomerangGFX 2670 | _BubbleLeadGFX: 2671 | dw BubbleLeadGFX 2672 | _MirrorBusterGFX: 2673 | dw MirrorBusterGFX 2674 | _HealthBarGFX: 2675 | dw HealthBarGFX 2676 | _SevenSegmentGFX: 2677 | dw SevenSegmentGFX 2678 | Pointer1001E: 2679 | dw Data10DA5 2680 | Pointer10020: 2681 | dw $4FDB 2682 | Pointer10022: 2683 | dw $4FDE 2684 | Pointer10024: 2685 | dw $4FE1 2686 | Pointer10026: 2687 | dw $4FE4 2688 | Pointer10028: 2689 | dw $4FE7 2690 | Pointer1002A: 2691 | dw $4FEA 2692 | Pointer1002C: 2693 | dw $4FEF 2694 | Pointer1002E: 2695 | dw $4FED 2696 | Pointer10030: 2697 | dw $4FF2 2698 | Pointer10032: 2699 | dw $4FF5 2700 | Pointer10034: 2701 | dw $4FF8 2702 | Pointer10036: 2703 | dw $4FFB 2704 | Pointer10038: 2705 | dw $4FFE 2706 | Pointer1003A: 2707 | dw $5001 2708 | Pointer1003C: 2709 | dw $5004 2710 | Pointer1003E: 2711 | dw $5007 2712 | Pointer10040: 2713 | dw $500A 2714 | Pointer10042: 2715 | dw $500D 2716 | Pointer10044: 2717 | dw $5010 2718 | Pointer10046: 2719 | dw $5013 2720 | Pointer10048: 2721 | dw $5016 2722 | Pointer1004A: 2723 | dw $5019 2724 | Pointer1004C: 2725 | dw $501C 2726 | Pointer1004E: 2727 | dw $501F 2728 | Pointer10050: 2729 | dw $5022 2730 | Pointer10052: 2731 | dw $5025 2732 | 2733 | MegaManSpriteGFX: 2734 | dw 114*16 2735 | dw MegaManSpriteTiles 2736 | 2737 | ItemPickupSpriteGFX: 2738 | dw 11*16 2739 | dw ItemPickupSpriteTiles 2740 | 2741 | MegaManSpriteTiles: 2742 | INCBIN "base1.gb",$1005C,114*16 2743 | 2744 | ItemPickupSpriteTiles: 2745 | INCBIN "base1.gb",$1077C,11*16 2746 | 2747 | ; bullets. format is: number of tiles, pointer to tile. 2748 | UnknownBulletGFX: ; ??? 2749 | db 1 2750 | dw UnknownBulletTiles 2751 | RollingCutterGFX: ; rolling cutter 2752 | db 4 2753 | dw RollingCutterTiles 2754 | ThunderBeamGFX: ; thunder beam 2755 | db 14 2756 | dw ThunderBeamTiles 2757 | IceSlasherGFX: ; ice slasher 2758 | db 8 2759 | dw IceSlasherTiles 2760 | FireStormGFX: ; fire storm 2761 | db 10 2762 | dw FireStormTiles 2763 | CarryGFX: ; carry 2764 | db 12 2765 | dw CarryTiles 2766 | AtomicFireGFX: ; atomic fire 2767 | db 12 2768 | dw AtomicFireTiles 2769 | TimeStopperGFX: ; time stopper 2770 | db 3 2771 | dw TimeStopperTiles 2772 | QuickBoomerangGFX: ; quick boomerang 2773 | db 2 2774 | dw QuickBoomerangTiles 2775 | BubbleLeadGFX: ; bubble lead 2776 | db 10 2777 | dw BubbleLeadTiles 2778 | MirrorBusterGFX: ; mirror buster 2779 | db 9 2780 | dw MirrorBusterTiles 2781 | 2782 | UnknownBulletTiles: 2783 | INCBIN "base1.gb",$1084D,1*16 2784 | RollingCutterTiles: 2785 | INCBIN "base1.gb",$1085D,4*16 2786 | ThunderBeamTiles: 2787 | INCBIN "base1.gb",$1089D,14*16 2788 | IceSlasherTiles: 2789 | INCBIN "base1.gb",$1097D,8*16 2790 | FireStormTiles: 2791 | INCBIN "base1.gb",$109FD,10*16 2792 | CarryTiles: 2793 | INCBIN "base1.gb",$10A9D,12*16 2794 | AtomicFireTiles: 2795 | INCBIN "base1.gb",$10B5D,12*16 2796 | TimeStopperTiles: 2797 | INCBIN "base1.gb",$10C1D,3*16 2798 | QuickBoomerangTiles: 2799 | INCBIN "base1.gb",$10C4D,2*16 2800 | BubbleLeadTiles: 2801 | INCBIN "base1.gb",$10C6D,10*16 2802 | MirrorBusterTiles: 2803 | INCBIN "base1.gb",$10D0D,9*16 2804 | 2805 | HealthBarGFX: 2806 | ; health bar, and ¾ of Mega Man's face 2807 | dw 11*16 2808 | dw HealthBarTiles 2809 | SevenSegmentGFX: 2810 | ; ¼ of Mega Man's face, 7-segment lives count, and "WPN" 2811 | dw 16*16 2812 | dw SevenSegmentTiles 2813 | Data10DA5: 2814 | dw 8*16 2815 | dw Tiles10F5B 2816 | 2817 | HealthBarTiles: 2818 | INCBIN "base1.gb",$10DA9,11*16 2819 | 2820 | SevenSegmentTiles: 2821 | INCBIN "base1.gb",$10E59,16*16 2822 | 2823 | Data10F59: 2824 | db 4,8 2825 | 2826 | Tiles10F5B: 2827 | INCBIN "base1.gb",$10F5B,8*16 2828 | 2829 | INCBIN "base1.gb",$10FDB,$12FE0-$10FDB 2830 | 2831 | freespace $12FE0 2832 | 2833 | SECTION "bank5",ROMX,BANK[$5] 2834 | 2835 | CutManLevelDataPointer: 2836 | dw CutManLevelData 2837 | IceManLevelDataPointer: 2838 | dw IceManLevelData 2839 | FireManLevelDataPointer: 2840 | dw FireManLevelData 2841 | ElecManLevelDataPointer: 2842 | dw ElecManLevelData 2843 | 2844 | CutManLevelData: 2845 | INCBIN "base1.gb",$14008,$1492F-$14008 2846 | 2847 | IceManLevelData: 2848 | INCBIN "base1.gb",$1492F,$1525A-$1492F 2849 | 2850 | FireManLevelData: 2851 | INCBIN "base1.gb",$1525A,$15F72-$1525A 2852 | 2853 | ElecManLevelData: 2854 | INCBIN "base1.gb",$15F72,$17000-$15F72 2855 | 2856 | freespace $17000 2857 | 2858 | SECTION "bank6",ROMX,BANK[$6] 2859 | 2860 | Pointer18000: 2861 | dw $402A 2862 | Pointer18002: 2863 | dw $402E 2864 | Pointer18004: 2865 | dw $4032 2866 | Pointer18006: 2867 | dw $4034 2868 | Pointer18008: 2869 | dw $4036 2870 | Pointer1800A: 2871 | dw $4038 2872 | Pointer1800C: 2873 | dw $403A 2874 | Pointer1800E: 2875 | dw $4D07 2876 | Pointer18010: 2877 | dw $4D0B 2878 | Pointer18012: 2879 | dw $4D0D 2880 | Pointer18014: 2881 | dw $4D0F 2882 | Pointer18016: 2883 | dw $4D13 2884 | Pointer18018: 2885 | dw $4D17 2886 | Pointer1801A: 2887 | dw $5DCF 2888 | Pointer1801C: 2889 | dw $5DD3 2890 | Pointer1801E: 2891 | dw $5DD7 2892 | Pointer18020: 2893 | dw $5DD9 2894 | Pointer18022: 2895 | dw $5DDD 2896 | Pointer18024: 2897 | dw $5DDF 2898 | Pointer18026: 2899 | dw $5DE3 2900 | Pointer18028: 2901 | dw $5DE5 2902 | 2903 | INCBIN "base1.gb",$1802A,$14C-$2A 2904 | 2905 | TitleScreenTilemap: ; $6:414C 2906 | INCBIN "base1.gb",$1814C,20*11 2907 | 2908 | INCBIN "base1.gb",$18228,$1BBB7-$18228 2909 | 2910 | freespace $1BBB7 2911 | 2912 | SECTION "bank7",ROMX,BANK[$7] 2913 | Pointer1C000: 2914 | dw $403E 2915 | Pointer1C002: 2916 | dw $4041 2917 | Pointer1C004: 2918 | dw $4044 2919 | Pointer1C006: 2920 | dw $4047 2921 | Pointer1C008: 2922 | dw $404A 2923 | Pointer1C00A: 2924 | dw $404D 2925 | Pointer1C00C: 2926 | dw $4050 2927 | Pointer1C00E: 2928 | dw $4053 2929 | Pointer1C010: 2930 | dw $4056 2931 | Pointer1C012: 2932 | dw $4059 2933 | Pointer1C014: 2934 | dw $405C 2935 | Pointer1C016: 2936 | dw $405F 2937 | Pointer1C018: 2938 | dw $4062 2939 | Pointer1C01A: 2940 | dw $4065 2941 | Pointer1C01C: 2942 | dw $4068 2943 | Pointer1C01E: 2944 | dw $406B 2945 | Pointer1C020: 2946 | dw $406E 2947 | Pointer1C022: 2948 | dw $4071 2949 | Pointer1C024: 2950 | dw $4074 2951 | Pointer1C026: 2952 | dw $4077 2953 | Pointer1C028: 2954 | dw $407A 2955 | Pointer1C02A: 2956 | dw $407D 2957 | Pointer1C02C: 2958 | dw $407F 2959 | Pointer1C02E: 2960 | dw $4081 2961 | Pointer1C030: 2962 | dw $4083 2963 | Pointer1C032: 2964 | dw $4085 2965 | Pointer1C034: 2966 | dw $4091 2967 | Pointer1C036: 2968 | dw $4099 2969 | Pointer1C038: 2970 | dw $40A1 2971 | Pointer1C03A: 2972 | dw $40AB 2973 | Pointer1C03C: 2974 | dw $40AD 2975 | 2976 | INCBIN "base1.gb",$1C03E,$1F813-$1C03E 2977 | 2978 | freespace $1F813 2979 | 2980 | SECTION "bank8",ROMX,BANK[$8] 2981 | 2982 | Pointer20000: 2983 | dw $4079 2984 | Pointer20002: 2985 | dw $4DD9 2986 | Pointer20004: 2987 | dw $580A 2988 | Pointer20006: 2989 | dw $6F67 2990 | 2991 | INCBIN "base1.gb",$20008,$23829-$20008 2992 | 2993 | freespace $23829 2994 | 2995 | SECTION "bank9",ROMX,BANK[$9] 2996 | 2997 | Function24000: 2998 | jp $474A 2999 | Function24003: 3000 | jp $4AE6 3001 | Function24006: 3002 | jp $4BC0 3003 | Function24009: 3004 | jp $4DDD 3005 | Function2400C: 3006 | jp $4ED7 3007 | Function2400F: 3008 | jp $5151 3009 | Function24012: 3010 | jp $53BF 3011 | Function24015: 3012 | jp $58D4 3013 | Function24018: 3014 | jp $5966 3015 | Function2401B: 3016 | jp $50E8 3017 | Function2401E: 3018 | jp $551D 3019 | Function24021: 3020 | jp $5753 3021 | Function24024: 3022 | jp $5B73 3023 | Function24027: 3024 | jp $5C5A 3025 | Function2402A: 3026 | jp $61CB 3027 | Function2402D: 3028 | jp $6575 3029 | Function24030: 3030 | jp $6639 3031 | Function24033: 3032 | jp $6A79 3033 | Function24036: 3034 | jp $6CFE 3035 | Function24039: 3036 | jp $73DD 3037 | Function2403C: 3038 | jp $746A 3039 | Function2403F: 3040 | jp $793F 3041 | Function24042: 3042 | jp $7239 3043 | Function24045: 3044 | jp $7B36 3045 | 3046 | INCBIN "base1.gb",$24048,$27D32-$24048 3047 | 3048 | freespace $27D32 3049 | 3050 | SECTION "bankA",ROMX,BANK[$A] 3051 | 3052 | Function28000: 3053 | jp $4090 3054 | 3055 | Function28003: 3056 | jp $4331 3057 | 3058 | Function28006: 3059 | jp $40eb 3060 | 3061 | Function28009: 3062 | jp $40ed 3063 | 3064 | Function2800C: 3065 | jp $40e1 3066 | 3067 | Function2800F: 3068 | jp $4401 3069 | 3070 | Function28012: 3071 | jp $4325 3072 | 3073 | INCBIN "base1.gb",$28015,$2B20D-$28015 3074 | 3075 | freespace $2B20D 3076 | 3077 | SECTION "bankB",ROMX,BANK[$B] 3078 | 3079 | Function2C000: 3080 | jp $4516 3081 | 3082 | INCBIN "base1.gb",$2C003,$2D5D0-$2C003 3083 | 3084 | freespace $2D5D0 3085 | 3086 | SECTION "bankC",ROMX,BANK[$C] 3087 | 3088 | Pointer30000: 3089 | dw $4046 3090 | Pointer30002: 3091 | dw $4053 3092 | Pointer30004: 3093 | dw $4060 3094 | Pointer30006: 3095 | dw $406D 3096 | Pointer30008: 3097 | dw $558A 3098 | Pointer3000A: 3099 | dw $55B1 3100 | Pointer3000C: 3101 | dw $5597 3102 | Pointer3000E: 3103 | dw $55A4 3104 | 3105 | Function30010: ; $C:4010 3106 | jp $69C9 3107 | 3108 | Function30013: ; $C:4013 3109 | jp $698C 3110 | 3111 | INCBIN "base1.gb",$30016,$33395-$30016 3112 | 3113 | freespace $33395 3114 | 3115 | SECTION "bankD",ROMX,BANK[$D] 3116 | 3117 | Section34000: 3118 | jp $48d9 3119 | 3120 | Section34003: 3121 | jp $4dc9 3122 | 3123 | Section34006: 3124 | jp $4f06 3125 | 3126 | Section34009: 3127 | jp $50af 3128 | 3129 | Section3400C: 3130 | jp $51bb 3131 | 3132 | Section3400F: 3133 | jp $5a76 3134 | 3135 | Section34012: 3136 | jp $5ec2 3137 | 3138 | Section34015: 3139 | jp $61c3 3140 | 3141 | Section34018: 3142 | jp $625c 3143 | 3144 | INCBIN "base1.gb",$3401b,$36311-$3401b 3145 | 3146 | freespace $36311 3147 | 3148 | SECTION "bankE",ROMX,BANK[$E] 3149 | Section38000: 3150 | jp $455b 3151 | 3152 | INCBIN "base1.gb",$38003,$3BBAF-$38003 3153 | 3154 | freespace $3BBAF 3155 | 3156 | SECTION "bankF",ROMX,BANK[$F] 3157 | 3158 | freespace $3C000 3159 | -------------------------------------------------------------------------------- /3.s: -------------------------------------------------------------------------------- 1 | ; C698 and CC46 contain HP of an enemy on screen 2 | ; C6D8 and CC46 contain HP of an enemy on screen 3 | 4 | ; D70D, D71C, D721, D741, D742, D75C, D784: Megaman's x coord? 5 | ; D71E, D723, D724, D728, D743, D744, D746, D75D: Megaman's y coord? 6 | ; maybe these are the coords of each individual sprite? 7 | 8 | ; weapons: 9 | ; $00 buster 10 | ; $01 rush coil 11 | ; $02 spark shock 12 | ; $03 gemini laser 13 | ; $04 search snake 14 | ; $05 shadow blade 15 | ; $06 screw crusher 16 | ; $07 rush jet 17 | ; $08 dive missile 18 | ; $09 skull barrier 19 | ; $0A drill bomb 20 | ; $0B dust crusher 21 | ; $0C energy tank(?) 22 | 23 | ; ld a,1 ; top half of screen 24 | ; F:414B, call $0230 25 | ; ld a,2 ; bottom half 26 | ; F:414B, call $0230 27 | 28 | ; a = 0: draw "MENU" 29 | ; a = 1: draw upper half of stage select background 30 | ; a = 2: draw lower half of stage select background 31 | ; a = 3: draw shutters over sparkman 32 | ; a = 4: draw shutters over geminiman 33 | ; a = 5: draw shutters over snakeman 34 | ; a = 6: draw shutters over shadowman 35 | ; a = 7: draw password entry background 36 | ; 37 | ; a = E: draw upper half of Dr.W stage select background 38 | ; a = F: draw lower half of Dr.W stage select background 39 | 40 | ; Function22D: loads robot master sprite tiles to $8000 41 | ; a = 1 : first batch of robot masters??? 42 | ; a = 2 : second batch of robot masters??? 43 | ; a = 3 : password 44 | ; a = 4 : acquire weapon? 45 | ; a = 5 : sparkman 46 | ; a = 6 : geminiman 47 | ; a = 7 : snakeman 48 | ; a = 8 : shadowman 49 | ; a = 9 : diveman 50 | ; a = A : skullman 51 | ; a = B : drillman 52 | ; a = C : dustman 53 | ; a = D : wily fortress cutscene? 54 | ; a = E : wily floaty thing 55 | ; a = F : ending city cutscene? 56 | ; a = 10: wily fortress destroyed cutscene? 57 | ; a = 11: wily machine? 58 | 59 | bankswitch: MACRO 60 | ld [$DE93],a 61 | ld [$2100],a 62 | ENDM 63 | 64 | SECTION "func0",ROM0[0] 65 | Func0: 66 | ld hl,$FFFE 67 | ld sp,hl 68 | jp $0150 69 | db 1 70 | 71 | Func8: 72 | ld a,l 73 | ld [$cf78],a 74 | ld a,h 75 | jp $0819 76 | 77 | rept 8 78 | nop 79 | endr 80 | 81 | SECTION "func18",ROM0[$18] 82 | ld a,[$DF06] 83 | cp $2B 84 | ret 85 | 86 | rept 34 87 | nop 88 | endr 89 | 90 | SECTION "func40",ROM0[$40] 91 | jp $05AB 92 | 93 | rept 5 94 | nop 95 | endr 96 | 97 | SECTION "func48",ROM0[$48] 98 | jp $0719 99 | 100 | rept 5 101 | nop 102 | endr 103 | 104 | SECTION "func50",ROM0[$50] 105 | reti 106 | 107 | rept 7 108 | nop 109 | endr 110 | 111 | SECTION "func58",ROM0[$58] 112 | reti 113 | 114 | rept 7 115 | nop 116 | endr 117 | 118 | SECTION "func60",ROM0[$60] 119 | reti 120 | 121 | db 1,2,4,8,16,32,64,128 122 | nop 123 | nop 124 | nop 125 | nop 126 | nop 127 | nop 128 | db $11,$FF,$80 129 | 130 | rept 94 131 | nop 132 | endr 133 | 134 | SECTION "funcd0",ROM0[$D0] 135 | incbin "base3.gb",$D0,$30 136 | 137 | SECTION "header",ROM0[$100] 138 | nop 139 | jp $0150 140 | 141 | SECTION "start",ROM0[$150] 142 | Function150: 143 | jp Function529 144 | Function153: 145 | jp $1BA1 146 | Function156: 147 | jp $3E15 148 | Function159: 149 | jp $3E21 150 | Function15C: 151 | jp $2C26 152 | Function15F: 153 | jp $2C3A 154 | Function162: 155 | jp $2C2E 156 | Function165: 157 | jp FunctionBE0 158 | Function168: 159 | jp $1630 160 | Function16B: 161 | jp $158A 162 | Function16E: 163 | jp $1840 164 | Function171: 165 | jp $184B 166 | Function174: 167 | jp Function15F8 168 | Copy8: ; $177 169 | ; copy 8 bytes of data pointed to by de to the location pointed to by hl 170 | jp Function15BC 171 | Copy4: ; $17A 172 | ; copy 4 bytes of data pointed to by de to the location pointed to by hl 173 | jp Function15C8 174 | Copy2: ; $17D 175 | ; copy 2 bytes of data pointed to by de to the location pointed to by hl 176 | jp Function15CE 177 | Function180: 178 | jp CopyData 179 | Function183: 180 | jp Function178B 181 | Function186: 182 | jp $1747 183 | Function189: 184 | jp $176D 185 | Function18C: 186 | jp $60E5 187 | Function18F: 188 | jp $24A9 189 | Function192: 190 | jp $24C3 191 | Function195: 192 | jp $247C 193 | Function198: 194 | jp $24B9 195 | Function19B: 196 | jp $2D3A 197 | Function19E: 198 | jp $311B 199 | Function1A1: 200 | jp $312E 201 | Function1A4: 202 | jp $306C 203 | Function1A7: 204 | jp $30A2 205 | Function1AA: 206 | jp $2E80 207 | Function1AD: 208 | jp $2B39 209 | Function1B0: 210 | jp $2B45 211 | Function1B3: 212 | jp $2B54 213 | Function1B6: 214 | jp $2A69 215 | Function1B9: 216 | jp $2A7F 217 | Function1BC: 218 | jp $0C8E 219 | Function1BF: 220 | jp $2E66 221 | Function1C2: 222 | jp $1859 223 | Function1C5: 224 | jp $189B 225 | Function1C8: 226 | jp $155D 227 | Function1CB: 228 | jp $14A4 229 | Function1CE: 230 | jp Function284 231 | Function1D1: 232 | jp $0903 233 | Function1D4: 234 | jp $3205 235 | Function1D7: 236 | jp $2DAA 237 | Data1DA: 238 | db $D8, $38 239 | Function1DC: 240 | jp $2A4F 241 | Function1DF: 242 | jp $2A61 243 | Function1E2: 244 | jp $2A8E 245 | Function1E5: 246 | jp $2A9C 247 | Function1E8: 248 | jp $2AAC 249 | Function1EB: 250 | jp $2B62 251 | Function1EE: 252 | jp $2B66 253 | Function1F1: 254 | jp $18F9 255 | Function1F4: 256 | jp $2B6B 257 | Function1F7: 258 | jp $2B7C 259 | Function1FA: 260 | jp $2B99 261 | Function1FD: 262 | jp $2BA2 263 | Function200: 264 | jp $2B2D 265 | Function203: 266 | jp $2B14 267 | Function206: 268 | jp $2B1E 269 | Function209: 270 | jp $1B03 271 | Function20C: 272 | jp $1B03 273 | Function20F: 274 | jp $1ABF 275 | Function212: 276 | jp $0D46 277 | Function215: 278 | jp $1907 279 | Function218: 280 | jp $0D2F 281 | Function21B: 282 | jp $2477 283 | Function21E: 284 | jp $2C19 285 | Function221: 286 | jp $0E2E 287 | Function224: 288 | jp $0829 289 | Function227: 290 | jp $07EF 291 | Function22A: 292 | jp $1C55 293 | Function22D: ; load cutscene sprite tiles 294 | jp Function1C93 295 | Function230: 296 | jp $1CEE 297 | Function233: 298 | jp $1D49 299 | Function236: 300 | jp $1D87 301 | Function239: 302 | jp $1D74 303 | Function23C: 304 | jp $1EA9 305 | Function23F: 306 | jp $1EAA 307 | Function242: 308 | jp $1F02 309 | Function245: 310 | jp $2135 311 | Function248: 312 | jp $152E 313 | Function24B: 314 | jp $2BE8 315 | Function24E: 316 | jp $2BFE 317 | Function251: 318 | jp $37D5 319 | Function254: 320 | jp $37A8 321 | Function257: 322 | jp $1603 323 | Function25A: 324 | jp $1942 325 | Function25D: 326 | jp $2C8A 327 | Function260: 328 | jp $2CAD 329 | Function263: 330 | jp $19EE 331 | Function266: 332 | jp $1A04 333 | Function269: 334 | jp $030F 335 | Function26C: 336 | jp $2D1E 337 | Function26F: 338 | jp $1A18 339 | Function272: 340 | jp $0D59 341 | Function275: 342 | jp $0DC3 343 | Function278: 344 | jp $0DDF 345 | Function27B: 346 | jp $29CB 347 | Function27E: 348 | jp $1517 349 | Function281: 350 | jp $0DF4 351 | 352 | Function284: ; $284 353 | cp 6 354 | ret nc 355 | ld [$FF91],a 356 | ld a,[$DE93] 357 | push af 358 | push hl 359 | push de 360 | ld a,[$FF91] 361 | ld e,a 362 | ld d,0 363 | ld hl,Data2BB 364 | add hl,de 365 | add hl,de 366 | ld a,[hli] 367 | ld [$C0D1],a 368 | ld a,[hli] 369 | ld [$C0D2],a 370 | ld a,$C3 371 | ld [$C0D0],a 372 | pop de 373 | pop hl 374 | ld a,1 375 | bankswitch 376 | call $C0D0 377 | pop af 378 | bankswitch 379 | ret 380 | 381 | Data2BB: 382 | dw Function2C7 383 | dw $60E5 384 | dw $5F9A 385 | dw Function2C7 386 | dw $5F90 387 | dw $59BB 388 | 389 | Function2C7: ; $2C7 390 | ret 391 | 392 | INCBIN "base3.gb",$2C8,$529-$2C8 393 | 394 | Function529: ; $529 395 | ld hl,$C000 396 | ld bc,$2000 397 | xor a 398 | call Function15F8 399 | call $14A4 400 | ld a,[$FF8A] 401 | ld [$DF06],a 402 | xor a 403 | ld [$CCFC],a 404 | ld [$DE8B],a 405 | xor a 406 | ld [$FF24],a 407 | ld [$FF25],a 408 | ld [$FF26],a 409 | di 410 | xor a 411 | ld [$FF0F],a 412 | ld [$FFFF],a 413 | ld hl,$FFFE 414 | ld sp,hl 415 | call $1517 416 | ld hl,$8000 417 | ld bc,$2000 418 | xor a 419 | call Function15F8 420 | ld hl,$C000 421 | ld bc,$1F00 422 | xor a 423 | call Function15F8 424 | ld hl,$FF8A 425 | ld bc,$0072 426 | xor a 427 | call Function15F8 428 | di 429 | xor a 430 | ld [$FF0F],a 431 | ld [$FFFF],a 432 | ld hl,$FFFE 433 | ld sp,hl 434 | ld a,1 435 | bankswitch 436 | call $14A4 437 | call $05A0 438 | call $14FF 439 | ld a,0 440 | ld [$FF47],a 441 | ld [$FF48],a 442 | ld [$FF49],a 443 | ld [$DE98],a 444 | call $1592 445 | jp $86A 446 | 447 | Function5A0: ; $5A0 448 | ld hl,$C0A4 449 | ld bc,$005C 450 | ld a,$C9 451 | jp Function15F8 452 | 453 | INCBIN "base3.gb",$5AB,$8c0-$5AB 454 | Function8C0: 455 | rlca 456 | rst $18 457 | or a 458 | jr nz,.next 459 | call $1BAD 460 | ld a,[$DF08] 461 | cp 9 462 | call z,$1C09 463 | jr .next2 464 | .next 465 | 466 | ld a,[$DF0A] 467 | bit 1,a 468 | jr nz,.next3 469 | call $1BD3 470 | jr .next2 471 | .next3 472 | ld a,$B 473 | ld [$DF08],a 474 | .next2 475 | ld a,0 476 | ld [$DE8C],a 477 | ld sp,$FFFE 478 | call FunctionB59 479 | call $B26 480 | xor a 481 | ld [$DE99],a 482 | ld [$DE92],a 483 | rst 8 484 | nop 485 | call $1517 486 | call $15AC 487 | call $31A7 488 | xor a 489 | ld [$DD00],a 490 | ld [$DEAC],a 491 | ld [$DEAB],a 492 | ld a,1 493 | bankswitch 494 | call $7AFF 495 | call FunctionB59 496 | xor a 497 | ld [$FF0F],a 498 | ld a,3 499 | ld [$FFFF],a 500 | call $1592 501 | ei 502 | call $850 503 | call $B45 504 | call $155D 505 | ld a,$1B 506 | ld [$DE95],a 507 | ld a,$1C 508 | ld [$FF48],a 509 | ld a,$D0 510 | ld [$FF49],a 511 | ld a,7 512 | ld [$FF4B],a 513 | ld a,$80 514 | ld [$FF4A],a 515 | ld a,$E3 516 | ld [$DE8A],a 517 | ld a,$5A 518 | ld [$DF11],a 519 | jr Function97D 520 | 521 | Function950: 522 | ld sp,$FFFE 523 | call $1539 524 | ld hl,$DE86 525 | inc [hl] 526 | inc hl 527 | dec [hl] 528 | call $68B2 529 | ld a,[$D7D8] 530 | or a 531 | jr nz,Function980 532 | call $42CE 533 | call $F67 534 | call $26E5 535 | call $216E 536 | call $3CC2 537 | call $5FBB 538 | call $5C00 539 | call $65D0 540 | Function97D: 541 | call $3893 542 | Function980: 543 | ld a,[$DE94] 544 | bankswitch 545 | call $DE80 546 | ld a,1 547 | bankswitch 548 | call $32EE 549 | ld a,[$DE4C] 550 | or a 551 | jr nz,Function9F2 552 | 553 | Function99D: 554 | ld a,[$CCFD] 555 | dec a 556 | jp z,FunctionA0C 557 | ld hl,$DF0A 558 | bit 2,[hl] 559 | jr z,.next 560 | ld a,[$D761] 561 | cp $13 562 | jp c,FunctionB65 563 | .next 564 | ld a,[$CC56] 565 | or a 566 | Function9B7: 567 | jp z,Function950 568 | ld hl,$DECF 569 | ld a,[hl] 570 | cp $FF 571 | jr z,.next2 572 | dec [hl] 573 | jr nz,.next2 574 | dec [hl] 575 | xor a 576 | ld [$DE4B],a 577 | ld a,[$DE47] 578 | cp 2 579 | jr z,.next2 580 | dec a 581 | jr z,.next5 582 | rst 8 583 | ld b,l 584 | jr .next2 585 | .next5 586 | call $B45 587 | xor a 588 | ld [$DD00],a 589 | .next2 590 | ld a,[$DE48] 591 | or a 592 | jp z,Function950 593 | ld a,[$D761] 594 | cp $10 595 | jr c,Function9F2 596 | cp $14 597 | jp c,Function950 598 | Function9F2: 599 | ld a,[$DEC4] 600 | ld l,a 601 | ld a,[$DEC5] 602 | ld h,a 603 | ld a,h 604 | and $1F 605 | or l 606 | jr z,FunctionA19 607 | dec hl 608 | ld a,l 609 | ld [$DEC4],a 610 | ld a,h 611 | ld [$DEC5],a 612 | jp Function950 613 | 614 | FunctionA0C: 615 | ld a,[$DF12] 616 | call $829 617 | xor a 618 | ld [$CCFD],a 619 | jp Function950 620 | 621 | FunctionA19: 622 | ld a,$F 623 | bankswitch 624 | call $4012 625 | ld a,1 626 | bankswitch 627 | xor a 628 | ld [$DECC],a 629 | ld [$DE44],a 630 | ld a,[$DF08] 631 | cp $B 632 | jp z,FunctionB90 633 | rst 8 634 | ld d,b 635 | ld a,[$DF08] 636 | cp 9 637 | jr nz,.next2 638 | rst 8 639 | nop 640 | jr .next 641 | .next2 642 | ld a,[$DE49] 643 | or a 644 | call z,$1BF1 645 | .next 646 | xor a 647 | ld [$D791],a 648 | ld [$D792],a 649 | call $211D 650 | rst 8 651 | nop 652 | ld a,[$DE5A] 653 | cp $3B 654 | call z,$1C23 655 | ld a,1 656 | bankswitch 657 | call FunctionB59 658 | call FunctionA8E 659 | xor a 660 | ld [$DE99],a 661 | jp $8B2 662 | 663 | FunctionA78: 664 | di 665 | ld bc,$34 666 | ld hl,$DD00 667 | xor a 668 | call Function15F8 669 | ei 670 | call FunctionA8E 671 | xor a 672 | ld [$DE8C],a 673 | jp $0B16 674 | 675 | FunctionA8E: 676 | ld a,$98 677 | ld [$DE9C],a 678 | ld a,$98 679 | ld hl,$DE9D 680 | ld bc,$B 681 | call Function15F8 682 | ret 683 | 684 | FunctionA9F: 685 | rst 8 686 | nop 687 | xor a 688 | ld [$FF47],a 689 | ld [$DE95],a 690 | ld [$FF48],a 691 | ld [$FF49],a 692 | ld [$DE44],a 693 | ld hl,$DD08 ; number of lives 694 | dec [hl] 695 | jr z,GameOver 696 | 697 | FunctionAB4: 698 | ld a,$98 699 | ld [$DE9C],a 700 | jp $08E8 701 | 702 | GameOver: 703 | rst $8 704 | ld b,e 705 | xor a 706 | ld [$D791],a 707 | ld [$D792],a 708 | call $211D 709 | ld a,$A 710 | bankswitch 711 | call $4000 712 | ld a,1 713 | bankswitch 714 | call $0B16 715 | ld a,[$DECB] 716 | or a 717 | jr nz,.next 718 | ld a,[$DF0A] 719 | res 1,a 720 | ld [$DF0A],a 721 | jp z,$0A63 722 | .next 723 | xor a 724 | ld [$DF0F],a 725 | ld [$DE8C],a 726 | call $0A93 727 | jp FunctionAB4 728 | 729 | FunctionAFC: 730 | ld a,[$CC00] 731 | and 1 732 | ret z 733 | rst 8 734 | ld d,d 735 | call $2105 736 | xor a 737 | ld [$DEC9],a 738 | rst 8 739 | nop 740 | ld a,1 741 | bankswitch 742 | ret 743 | 744 | InitializeLives: ; $B16 745 | ld a,3 ; number of lives on a new game 746 | ld [$DD08],a 747 | xor a 748 | ld [$DE99],a 749 | ld [$DECC],a 750 | call $5A0E 751 | ret 752 | 753 | INCBIN "base3.gb",$b26,$b59-$b26 754 | 755 | FunctionB59: ; $B59 756 | xor a 757 | ld [$FF47],a 758 | xor a 759 | ld [$DE95],a 760 | ld [$FF48],a 761 | ld [$FF49],a 762 | ret 763 | 764 | FunctionB65: ; $B65 765 | ld hl,$DF11 766 | dec [hl] 767 | jr nz,.done 768 | ld a,$13 769 | ld [$D761],a 770 | ld [$CC56],a 771 | ld [$DE48],a 772 | ld a,$FF 773 | ld a,$B4 774 | ld [$DEC4],a 775 | ld a,0 776 | ld [$DEC5],a 777 | rst 8 778 | inc e 779 | ld a,2 780 | ld [$DEC6],a 781 | xor a 782 | ld [$DEC7],a 783 | .done 784 | jp Function950 785 | 786 | FunctionB90: ; $B90 787 | xor a 788 | ld [$D792],a 789 | ld [$DE95],a 790 | call $155D 791 | call $1C3D 792 | jp $214A 793 | 794 | FunctionBA0: ; $BA0 795 | ld a,[$D724] 796 | sub $20 797 | jr nc,.next 798 | xor a 799 | .next 800 | ld [$DE43],a 801 | ld a,$F8 802 | ld [$D724],a 803 | ld a,1 804 | ld [$DEC6],a 805 | xor a 806 | ld [$DEC7],a 807 | ret 808 | 809 | FunctionBBA: ; $BBA 810 | ld a,[$D746] 811 | or a 812 | ret z 813 | pop hl 814 | rst 8 815 | inc e 816 | ld a,2 817 | ld [$DEC6],a 818 | xor a 819 | ld [$DEC7],a 820 | ret 821 | 822 | FunctionBCC: ; $BCC 823 | ld a,[$D721] 824 | ld e,a 825 | ld a,[$D724] 826 | jr FunctionBDF 827 | 828 | FunctionBD5: ; $BD5 829 | ld a,[$D721] 830 | add [hl] 831 | inc hl 832 | ld e,a 833 | ld a,[$D724] 834 | add [hl] 835 | FunctionBDF: ; $BDF 836 | ld d,a 837 | FunctionBE0: ; $BE0 838 | ld [$D749],a 839 | ld a,e 840 | ld [$D748],a 841 | ld a,[$CC74] 842 | or a 843 | jr z,.next 844 | ld a,[$CC75] 845 | ld b,a 846 | ld a,d 847 | cp b 848 | jr nc,.next 849 | ld a,[$CC74] 850 | ld b,a 851 | ld a,d 852 | sub b 853 | ld d,a 854 | .next 855 | ld a,d 856 | ld [$DED0],a 857 | ld a,d 858 | cp $80 859 | jr c,.next2 860 | xor a 861 | jr .next3 862 | .next2 863 | ld a,[$FFB1] 864 | or a 865 | jr z,.next4 866 | ld a,e 867 | cp $A0 868 | jr c,.next4 869 | ld a,4 870 | jr .next3 871 | .next4 872 | call $CB4 873 | .next3 874 | ld b,a 875 | ld [$D747],a 876 | ld a,$54 877 | add b 878 | ld l,a 879 | ld a,$D8 880 | adc 0 881 | ld h,a 882 | ld a,[hl] 883 | and 3 884 | jr z,.next5 885 | cp 3 886 | jr z,.next6 887 | cp 2 888 | ld a,[$DED0] 889 | jr nz,.next7 890 | xor 8 891 | .next7 892 | and $8 893 | jr z,.next5 894 | .next6 895 | ld a,[$D747] 896 | cp 8 897 | jr nz,.next8 898 | ld a,[$FFB1] 899 | or a 900 | jr z,.next8 901 | ld a,$14 902 | ld [$D738],a 903 | .next8 904 | scf 905 | ret 906 | .next5 907 | ld a,[$D748] 908 | ld e,a 909 | ld a,[$FFB1] 910 | or a 911 | jr z,.next9 912 | ld a,e 913 | cp $A0 914 | jr c,.next10 915 | scf 916 | ret 917 | .next10 918 | ld a,[$D749] 919 | cp $F0 920 | jr nc,.next9 921 | cp $90 922 | jr c,.next9 923 | scf 924 | ret 925 | .next9 926 | ld hl,$DE00 927 | ld a,[hli] 928 | ld d,a 929 | .loop 930 | ld a,l 931 | cp d 932 | ret nc 933 | ld a,e 934 | cp [hl] 935 | inc l 936 | jr c,.next11 937 | cp [hl] 938 | inc l 939 | jr nc,.next12 940 | ld a,[$D749] 941 | cp [hl] 942 | inc l 943 | jr c,.next13 944 | cp [hl] 945 | inc l 946 | jr nc,.loop 947 | ret 948 | .next11 949 | inc l 950 | .next12 951 | inc l 952 | .next13 953 | inc l 954 | jr .loop 955 | 956 | INCBIN "base3.gb",$C8E,$15BC-$C8E 957 | 958 | Function15BC: ; $15BC 959 | ld a,[de] 960 | inc de 961 | ld [hli],a 962 | ld a,[de] 963 | inc de 964 | ld [hli],a 965 | ld a,[de] 966 | inc de 967 | ld [hli],a 968 | ld a,[de] 969 | inc de 970 | ld [hli],a 971 | Function15C8: ; $15C8 972 | ld a,[de] 973 | inc de 974 | ld [hli],a 975 | ld a,[de] 976 | inc de 977 | ld [hli],a 978 | Function15CE: ; $15CE 979 | ld a,[de] 980 | inc de 981 | ld [hli],a 982 | ld a,[de] 983 | inc de 984 | ld [hli],a 985 | ret 986 | 987 | Function15D5: ; $15D5 988 | ld a,[hli] 989 | ld [de],a 990 | inc de 991 | ld a,[hli] 992 | ld [de],a 993 | inc de 994 | ld a,[hli] 995 | ld [de],a 996 | inc de 997 | ld a,[hli] 998 | ld [de],a 999 | inc de 1000 | ret 1001 | 1002 | CopyData: ; $15E2 1003 | ; copy bc bytes of data from hl to de. 1004 | push af 1005 | .loop 1006 | ld a,[hli] 1007 | ld [de],a 1008 | inc de 1009 | dec bc 1010 | ld a,b 1011 | or c 1012 | jr nz,.loop 1013 | pop af 1014 | ret 1015 | 1016 | Function15ED: ; $15ED 1017 | push af 1018 | .loop 1019 | ld a,[hld] 1020 | ld [de],a 1021 | dec de 1022 | dec bc 1023 | ld a,b 1024 | or c 1025 | jr nz,.loop 1026 | pop af 1027 | ret 1028 | 1029 | Function15F8: ; $15F8 1030 | ld [hl],a 1031 | ld e,l 1032 | ld d,h 1033 | inc de 1034 | dec bc 1035 | ld a,b 1036 | or c 1037 | ret z 1038 | jp CopyData 1039 | 1040 | INCBIN "base3.gb",$1603,$178B-$1603 1041 | 1042 | Function178B: ; $178B 1043 | ; draws a row of tiles, like on the stage select screen 1044 | ld a,[$FF40] ; LCD control 1045 | and a,$80 1046 | jr nz,.next 1047 | jp CopyData 1048 | .next 1049 | ld a,b 1050 | or a 1051 | jr nz,.next2 1052 | ld a,c 1053 | cp a,3 1054 | jr c,.next3 1055 | .next2 1056 | call Function17B0 1057 | jr z,.next4 1058 | .next3 1059 | ld a,c 1060 | cp a,2 1061 | jr nz,.next5 1062 | call Function17E3 1063 | jr .next4 1064 | .next5 1065 | call $1810 1066 | .next4 1067 | ret 1068 | 1069 | Function17B0: 1070 | ld a,b 1071 | or a 1072 | jr nz,.next 1073 | ld a,c 1074 | cp a,3 1075 | ret c 1076 | .next 1077 | push bc 1078 | ld c,[hl] 1079 | inc hl 1080 | ld b,[hl] 1081 | inc hl 1082 | ld a,[hl] 1083 | inc hl 1084 | push hl 1085 | ld l,e 1086 | ld h,d 1087 | ld d,a 1088 | di 1089 | 1090 | .loop1 1091 | ld a,[$FF41] 1092 | and a,%11 1093 | jr z,.loop1 1094 | 1095 | .loop2 1096 | ld a,[$FF41] 1097 | and a,%11 1098 | jr nz,.loop2 1099 | 1100 | ld [hl],c 1101 | inc hl 1102 | ld [hl],b 1103 | inc hl 1104 | ld [hl],d 1105 | ei 1106 | inc hl 1107 | ld e,l 1108 | ld d,h 1109 | pop hl 1110 | pop bc 1111 | dec bc 1112 | dec bc 1113 | dec bc 1114 | ld a,b 1115 | or c 1116 | jr nz,Function17B0 1117 | ret 1118 | 1119 | Function17E3: ; $17E3 1120 | ld a,b 1121 | or a 1122 | jr nz,.next 1123 | ld a,c 1124 | cp a,2 1125 | ret c 1126 | .next 1127 | push bc 1128 | ld c,[hl] 1129 | inc hl 1130 | ld b,[hl] 1131 | inc hl 1132 | push hl 1133 | ld l,e 1134 | ld h,d 1135 | di 1136 | .next2 1137 | ld a,[$FF41] 1138 | and a,3 1139 | jr z,.next2 1140 | .next3 1141 | ld a,[$FF41] 1142 | and a,3 1143 | jr nz,.next3 1144 | ld [hl],c 1145 | inc hl 1146 | ld [hl],b 1147 | ei 1148 | inc hl 1149 | ld e,l 1150 | ld d,h 1151 | pop hl 1152 | pop bc 1153 | dec bc 1154 | dec bc 1155 | ld a,b 1156 | or c 1157 | jr nz,Function17E3 1158 | ret 1159 | 1160 | INCBIN "base3.gb",$1810,$1C93-$1810 1161 | 1162 | Function1C93: ; $1C93 1163 | sla a 1164 | ld l,a 1165 | ld h,0 1166 | ld de,$1F23 1167 | add hl,de 1168 | ldi a,[hl] 1169 | ld h,[hl] 1170 | ld l,a 1171 | .loop 1172 | ld a,[hli] 1173 | ld e,a 1174 | ld a,[hli] 1175 | ld d,a 1176 | or e 1177 | jr z,.next 1178 | ld a,[hli] 1179 | ld c,a 1180 | ld a,[hli] 1181 | ld b,a 1182 | ld a,[hli] 1183 | ld [$CC95],a 1184 | ld a,[hli] 1185 | push hl 1186 | call Function1CD1 1187 | ld a,[$CC95] 1188 | bankswitch 1189 | call $178B 1190 | pop hl 1191 | ld a,1 1192 | ld [$2100],a 1193 | jr .loop 1194 | .next 1195 | ld a,[$CC96] 1196 | bankswitch 1197 | ret 1198 | 1199 | Function1CD1: ; $1CD1 1200 | or a,$80 1201 | ld l,c 1202 | ld h,0 1203 | add hl,hl 1204 | add hl,hl 1205 | add hl,hl 1206 | add hl,hl 1207 | or h 1208 | ld h,a 1209 | push hl 1210 | ld l,b 1211 | ld h,0 1212 | add hl,hl 1213 | add hl,hl 1214 | add hl,hl 1215 | add hl,hl 1216 | ld b,h 1217 | ld c,l 1218 | pop hl 1219 | ld a,e 1220 | ld e,l 1221 | ld l,a 1222 | ld a,d 1223 | ld d,h 1224 | ld h,a 1225 | ret 1226 | 1227 | INCBIN "base3.gb",$1CEE,$1F23-$1CEE 1228 | 1229 | Data1F23: 1230 | dw $1F49 1231 | dw $1F51 1232 | dw $1F6B 1233 | dw $1F85 1234 | dw $1F99 1235 | dw $1FAD 1236 | dw $1FBB 1237 | dw $1FC9 1238 | dw $1FD7 1239 | dw $1FE5 1240 | dw $1FF3 1241 | dw $2001 1242 | dw $200F 1243 | dw $201D 1244 | dw $2031 1245 | dw $203F 1246 | dw $204D 1247 | dw $205B 1248 | dw $2063 1249 | 1250 | INCBIN "base3.gb",$1F49,$4000-$1F49 1251 | 1252 | SECTION "bank1",ROMX,BANK[$1] 1253 | INCBIN "base3.gb",$4000,$1CEF 1254 | 1255 | Function5CEF: 1256 | ld a,[$DEAC] 1257 | bit 1,a 1258 | jr nz,.next 1259 | ld hl,$D741 1260 | ld a,[$FF9B] 1261 | cp [hl] 1262 | jr c,.next 1263 | inc hl 1264 | ld a,[$FF9A] 1265 | cp [hl] 1266 | jr nc,.next 1267 | inc hl 1268 | ld a,[$FF9D] 1269 | cp [hl] 1270 | jr c,.next 1271 | inc hl 1272 | ld a,[$FF9C] 1273 | cp [hl] 1274 | jr nc,.next 1275 | ld h,$D4 ; $D40D >> 8 ??? 1276 | ld a,$0D ; $D40D & $FF??? 1277 | add c 1278 | ld l,a 1279 | ld a,[hl] 1280 | cp $FF 1281 | jr nz,.next2 1282 | ld a,1 1283 | ld [$DF0F],a 1284 | .next2 1285 | call $5DB4 1286 | jr .next3 1287 | .next 1288 | ld h,$D4 ; $D404 >> 8 ??? 1289 | ld a,$04 ; $D404 & $FF??? 1290 | add c 1291 | ld l,a 1292 | ld e,[hl] 1293 | ld a,8 1294 | add c 1295 | ld l,a 1296 | ld d,[hl] 1297 | ld l,e 1298 | ld h,d 1299 | call $7C4F 1300 | ld h,$D4 ; $D400 >> 8 ??? 1301 | ld a,$00 ; $D400 & $FF??? 1302 | add c 1303 | ld l,a 1304 | ld a,[hl] 1305 | cp $50 1306 | jr nc,.next4 1307 | and 4 1308 | jr nz,.next5 1309 | .next4 1310 | ld a,$10 1311 | ld [$D3EA],a 1312 | ld h,$D4 ; $D40F >> 8 ??? 1313 | ld a,$0F ; $D40F & $FF??? 1314 | add c 1315 | ld l,a 1316 | ld a,[hl] 1317 | ld [$CE55],a 1318 | ld a,$A 1319 | add c 1320 | ld l,a 1321 | ld a,[hl] 1322 | push af 1323 | ld a,9 1324 | add c 1325 | ld l,a 1326 | ld a,[hl] 1327 | add a 1328 | ld e,a 1329 | ld a,[$D769] 1330 | rrca 1331 | rrca 1332 | rrca 1333 | and 1 1334 | add e 1335 | add a 1336 | ld e,a 1337 | ld d,0 1338 | ld hl,$5F28 1339 | add hl,de 1340 | ld e,[hl] 1341 | inc hl 1342 | ld d,[hl] 1343 | ld l,e 1344 | ld h,d 1345 | pop af 1346 | call $2E80 1347 | .next5 1348 | ld h,$D4 ; $D401 >> 8 ??? 1349 | .next6 1350 | ld b,1 ; $D401 & $FF??? 1351 | ret 1352 | jr .next6 1353 | nop 1354 | ld b,0 1355 | jr .next7 1356 | .next3 1357 | ld b,1 1358 | .next7 1359 | ld h,$D4 ; $D400 >> 8 ??? 1360 | ld a,0 ; $D400 & $FF??? 1361 | add c 1362 | ld l,a 1363 | ld a,[hl] 1364 | cp $FF 1365 | jr nz,.next8 1366 | ld a,$D 1367 | add c 1368 | ld l,a 1369 | ld e,[hl] 1370 | inc l 1371 | ld d,[hl] 1372 | push bc 1373 | call $5ACE 1374 | pop bc 1375 | .next8 1376 | ld h,$D4 ; $D400 >> 8 ??? 1377 | ld b,0 ; $D400 & $FF??? 1378 | ret 1379 | 1380 | 1381 | ; ----- 1382 | 1383 | Function5DA5: 1384 | ld hl,$DF05 1385 | inc [hl] 1386 | ld a,[hl] 1387 | cp 5 1388 | jr c,.next 1389 | ld [hl],4 ; max of 4 energy tanks 1390 | ret 1391 | .next 1392 | rst 8 1393 | ld [de],a 1394 | ret 1395 | 1396 | Function5DB4: 1397 | ld a,9 1398 | add c 1399 | ld l,a 1400 | ld a,[hl] 1401 | dec a 1402 | jr z,.life 1403 | dec a 1404 | jr z,.bighealth 1405 | dec a 1406 | jr z,.littlehealth 1407 | dec a 1408 | jr z,.bigweap 1409 | dec a 1410 | jr z,.littleweap 1411 | jr Function5DA5 ; not a valid item? or perhaps an energy tank? 1412 | .life 1413 | ld hl,$DD08 1414 | inc [hl] 1415 | ld a,[hl] 1416 | cp 11 1417 | jr c,.nextlife 1418 | ld [hl],10 ; maximum of 9 extra lives 1419 | ret 1420 | .nextlife 1421 | rst 8 1422 | ld [de],a 1423 | ret 1424 | 1425 | .bighealth 1426 | ld d,10 1427 | jr .healaddress 1428 | .littlehealth 1429 | ld d,2 1430 | .healaddress 1431 | ld hl,$DE9C 1432 | jr .heal 1433 | 1434 | .bigweap 1435 | ld d,10 1436 | jr .weapaddress 1437 | .littleweap 1438 | ld d,2 1439 | .weapaddress 1440 | ld a,[$DE99] ; current weapon 1441 | or a 1442 | ret z ; can't heal the buster 1443 | add $9C ; $DE9C & $FF??? 1444 | ld l,a 1445 | ld h,$DE ; $DE9C >> 8??? 1446 | .heal 1447 | ld a,d 1448 | ld [$D4C1],a 1449 | ld a,l 1450 | ld [$D4BF],a 1451 | ld a,h 1452 | ld [$D4C0],a 1453 | ld hl,$DEAC 1454 | set 1,[hl] 1455 | xor a 1456 | ld [$D4BE],a 1457 | jr Function5E15 1458 | 1459 | Function5E0B: 1460 | ld hl,$D4BE 1461 | inc [hl] 1462 | ld a,[hl] 1463 | cp 4 1464 | ret c 1465 | xor a 1466 | ld [hl],a 1467 | Function5E15: 1468 | ; at this point: 1469 | ; - $D4C1 contains how many points to heal 1470 | ; - $D4BF,C0 contains a pointer to which meter to heal 1471 | ; - $D4BE contains a value from 0 to 3(???) 1472 | ld hl,$D4C1 1473 | ld a,[hl] 1474 | or a 1475 | jr z,.nomoreheal 1476 | dec [hl] 1477 | ld a,[$D4BF] 1478 | ld l,a 1479 | ld a,[$D4C0] 1480 | ld h,a 1481 | ld a,[hl] 1482 | cp $98 1483 | jr nc,.nomoreheal 1484 | rst 8 1485 | rla 1486 | ld a,8 1487 | add [hl] 1488 | ld [hl],a 1489 | cp $98 1490 | ret c 1491 | ld [hl],$98 1492 | ret 1493 | .nomoreheal 1494 | ld hl,$DEAC 1495 | res 1,[hl] 1496 | ret 1497 | 1498 | ; ----- 1499 | INCBIN "base3.gb",$5E3C,$8000-$5E3C 1500 | 1501 | SECTION "bank2",ROMX,BANK[$2] 1502 | Function8000: 1503 | jp $71cf 1504 | Function8003: 1505 | jp $70ff 1506 | Function8006: 1507 | jp $7a53 1508 | Function8009: 1509 | jp Function800F 1510 | Function800C: 1511 | jp $7b1d 1512 | Function800F: 1513 | 1514 | INCBIN "base3.gb",$800F,$C000-$800F 1515 | 1516 | SECTION "bank3",ROMX,BANK[$3] 1517 | FunctionC000: 1518 | jp $453B 1519 | FunctionC003: 1520 | jp $4977 1521 | FunctionC006: 1522 | jp $4d45 1523 | FunctionC009: 1524 | jp $56ef 1525 | FunctionC00C: 1526 | jp $5ddf 1527 | FunctionC00F: 1528 | jp $5ded 1529 | FunctionC012: 1530 | jp $5dfb 1531 | FunctionC015: 1532 | jp $5f17 1533 | FunctionC018: 1534 | jp $63e6 1535 | FunctionC01B: 1536 | ld a,2 1537 | ld [$CCFD],a 1538 | call $40aa 1539 | ld b,0 1540 | ret 1541 | 1542 | FunctionC026: 1543 | ld a,3 1544 | ld [$CCFD],a 1545 | xor a 1546 | ld [$CCF6],a 1547 | ld [$CCF1],a 1548 | ld b,2 1549 | ret 1550 | 1551 | INCBIN "base3.gb",$C035,$F300-$C035 1552 | 1553 | DataF300: 1554 | dw .label1 1555 | dw .label2 1556 | dw .label3 1557 | dw .label4 1558 | dw .label5 1559 | dw .label6 1560 | dw .label7 1561 | dw .label8 1562 | dw .label9 1563 | dw .label10 1564 | dw .label11 1565 | dw .label12 1566 | dw .label13 1567 | dw .label14 1568 | dw .label15 1569 | dw .label16 1570 | dw .label17 1571 | dw .label18 1572 | dw .label19 1573 | dw .label19 1574 | dw .label20 1575 | dw .label20 1576 | dw .label21 1577 | dw .label21 1578 | dw .label22 1579 | dw .label22 1580 | dw .label23 1581 | dw .label23 1582 | dw .label24 1583 | dw .label24 1584 | 1585 | .label1 1586 | incbin "base3.gb",$F33C,$F358-$F33C 1587 | .label2 1588 | incbin "base3.gb",$F358,$F374-$F358 1589 | .label3 1590 | incbin "base3.gb",$F374,$F393-$F374 1591 | .label4 1592 | incbin "base3.gb",$F393,$F3B2-$F393 1593 | .label5 1594 | incbin "base3.gb",$F3B2,$F3CF-$F3B2 1595 | .label6 1596 | incbin "base3.gb",$F3CF,$F3EC-$F3CF 1597 | .label7 1598 | incbin "base3.gb",$F3EC,$F409-$F3EC 1599 | .label8 1600 | incbin "base3.gb",$F409,$F426-$F409 1601 | .label9 1602 | incbin "base3.gb",$F426,$F44E-$F426 1603 | .label10 1604 | incbin "base3.gb",$F44E,$F476-$F44E 1605 | .label11 1606 | incbin "base3.gb",$F476,$F494-$F476 1607 | .label12 1608 | incbin "base3.gb",$F494,$F4B2-$F494 1609 | .label13 1610 | incbin "base3.gb",$F4B2,$F4D2-$F4B2 1611 | .label14 1612 | incbin "base3.gb",$F4D2,$F4F2-$F4D2 1613 | .label15 1614 | incbin "base3.gb",$F4F2,$F512-$F4F2 1615 | .label16 1616 | incbin "base3.gb",$F512,$F532-$F512 1617 | .label17 1618 | incbin "base3.gb",$F532,$F552-$F532 1619 | .label18 1620 | incbin "base3.gb",$F552,$F572-$F552 1621 | .label19 1622 | incbin "base3.gb",$F572,$F57C-$F572 1623 | .label20 1624 | incbin "base3.gb",$F57C,$F586-$F57C 1625 | .label21 1626 | incbin "base3.gb",$F586,$F590-$F586 1627 | .label22 1628 | incbin "base3.gb",$F590,$F59A-$F590 1629 | .label23 1630 | incbin "base3.gb",$F59A,$F5A6-$F59A 1631 | .label24 1632 | incbin "base3.gb",$F5A6,$10000-$F5A6 1633 | 1634 | SECTION "bank4",ROMX,BANK[$4] 1635 | Function10000: 1636 | jp $4073 1637 | Function10003: 1638 | jp $408b 1639 | Function10006: 1640 | jp $4dc7 1641 | Function10009: 1642 | jp $7dbb 1643 | 1644 | INCBIN "base3.gb",$1000c,$10073-$1000c 1645 | 1646 | LoadMegamanSprite: ; $4:4073 1647 | ld de,$8000 1648 | ld hl,$40C0 1649 | ld bc,$720 1650 | call Function183 1651 | ld de,$8800 1652 | ld hl,$47E0 1653 | ld bc,$00B0 1654 | jp Function183 1655 | 1656 | INCBIN "base3.gb",$1008B,$100C0-$1008B 1657 | 1658 | ; Megaman sprite in levels 1659 | incbin "base3.gb",$100C0,$720 1660 | 1661 | ; powerup sprites 1662 | INCBIN "base3.gb",$107E0,$B0 1663 | 1664 | INCBIN "base3.gb",$10890,$13BD1-$10890 1665 | 1666 | TitleScreenTilemap: ; $4:7BD1 1667 | INCBIN "base3.gb",$13BD1,20*18 1668 | 1669 | INCBIN "base3.gb",$13D39,$14000-$13D39 1670 | 1671 | SECTION "bank5",ROMX,BANK[$5] 1672 | Function14000: 1673 | jp $7e0a 1674 | INCBIN "base3.gb",$14003,$18000-$14003 1675 | 1676 | SECTION "bank6",ROMX,BANK[$6] 1677 | 1678 | Function18000: 1679 | jp Function18009 1680 | Function18003: 1681 | jp Function18ABC 1682 | Function18006: 1683 | jp $779E 1684 | 1685 | Function18009: ; $6:4009 1686 | ld hl,TitleScreenLogoTiles 1687 | ld bc,EndTitleScreenLogoTiles-TitleScreenLogoTiles 1688 | ld de,$9000 1689 | call Function183 1690 | ld hl,TitleScreenTextTiles 1691 | ld bc,EndTitleScreenTextTiles-TitleScreenTextTiles 1692 | ld de,$8800 1693 | call Function183 1694 | ld hl,$9800 1695 | ld bc,$9C00-$9800 1696 | ld a,$6C ; blank tile 1697 | call Function186 ; clear background map 1698 | ld a,$e4 1699 | ld [$ff48],a 1700 | ld hl,TitleScreenArrowTile 1701 | ld de,$8000 1702 | ld bc,EndTitleScreenArrowTile-TitleScreenArrowTile 1703 | jp Function180 1704 | 1705 | TitleScreenArrowTile: ; $6:403C 1706 | db $00,$00,$40,$40,$60,$60,$70,$50,$78,$48,$70,$50,$60,$60,$40,$40 1707 | EndTitleScreenArrowTile: 1708 | 1709 | TitleScreenLogoTiles: ; $6:404C 1710 | incbin "base3.gb",$1804C,$670 1711 | EndTitleScreenLogoTiles: 1712 | 1713 | TitleScreenTextTiles: ; $6:46BC 1714 | incbin "base3.gb",$186BC,$400 1715 | EndTitleScreenTextTiles: 1716 | 1717 | Function18ABC: ; $6:4ABC 1718 | INCBIN "base3.gb",$18ABC,$1B79E-$18ABC 1719 | 1720 | Function1B79E: ; $6:779E 1721 | call Function1C8 1722 | call Function1CB 1723 | call Function1BF2F 1724 | ld a,[$CCB2] 1725 | ld e,a 1726 | ld d,0 1727 | ld hl,Pointers1B7B5 1728 | add hl,de 1729 | ld a,[hli] 1730 | ld h,[hl] 1731 | ld l,a 1732 | jp hl 1733 | 1734 | Pointers1B7B5: ; $6:77B5 1735 | dw Function1B7F8 1736 | dw Function1B8C5 1737 | dw Function1B903 1738 | dw Function1BAE1 1739 | dw Function1B90B 1740 | dw Function1BAE1 1741 | dw Function1B913 1742 | dw Function1BAE1 1743 | dw Function1B932 1744 | dw Function1BAE1 1745 | dw Function1B93A 1746 | dw Function1BAE1 1747 | dw Function1B963 1748 | dw Function1BAE1 1749 | dw Function1B96B 1750 | dw Function1BAE1 1751 | dw Function1B973 1752 | dw Function1BAE1 1753 | dw Function1BB31 1754 | dw Function1BB7A 1755 | dw Function1B97B 1756 | dw Function1BAE1 1757 | dw Function1B9B3 1758 | dw Function1BAE1 1759 | dw Function1BBA3 1760 | dw Function1BBD1 1761 | dw Function1BBEE 1762 | dw Function1BC0D 1763 | dw Function1BC78 1764 | dw Function1BCA1 1765 | dw Function1BCB4 1766 | dw Function1BCBB 1767 | dw Function1B7F7 1768 | 1769 | Function1B7F7: ; $6:77F7 1770 | ret 1771 | 1772 | Function1B7F8: ; $6:77F8 1773 | xor a 1774 | ld [$d9ff],a 1775 | ld a,$06 1776 | ld [$cc96],a 1777 | ld hl,$8000 1778 | ld bc,$2000 1779 | xor a 1780 | call Function186 1781 | ld hl,$6772 1782 | ld de,$8000 1783 | ld bc,$0420 1784 | call Function183 1785 | call Function1BEE8 1786 | ld hl,$6e13 1787 | ld de,$9100 1788 | ld bc,$00b0 1789 | call Function183 1790 | ld a,$07 1791 | ld [$ff4b],a 1792 | ld a,$90 1793 | ld [$ff4a],a 1794 | ld c,$04 1795 | ld hl,$cc84 1796 | .loop1 1797 | xor a 1798 | ldi [hl],a 1799 | inc c 1800 | ld a,c 1801 | cp $14 1802 | jr c,.loop1 1803 | call Function19B 1804 | ld a,[$ce50] 1805 | ld l,a 1806 | ld h,$ce 1807 | ld a,$0a 1808 | .loop2 1809 | dec l 1810 | dec a 1811 | ld [hl],a 1812 | jr nz,.loop2 1813 | ld a,l 1814 | ld [$ce50],a 1815 | ld a,$ff 1816 | ld [$ce58],a 1817 | ld hl,$c600 1818 | ld bc,$0040 1819 | xor a 1820 | call Function174 1821 | ld a,$00 1822 | ld [$cc40],a 1823 | ld a,$c6 1824 | ld [$cc41],a 1825 | ld a,$40 1826 | ld [$cc42],a 1827 | ld a,$c6 1828 | ld [$cc43],a 1829 | ld a,$90 1830 | ld [$ff48],a 1831 | ld a,[$6744] 1832 | ld [$ff49],a 1833 | ld a,$13 1834 | ld [$c61c],a 1835 | call Function1A4 1836 | ld [$c650],a 1837 | ld a,$04 1838 | ld [$c613],a 1839 | ld a,$9f 1840 | ld [$c615],a 1841 | ld a,$6b 1842 | ld [$c616],a 1843 | ld a,$06 1844 | ld [$c61b],a 1845 | ld a,$b8 1846 | ld [$c60d],a 1847 | ld a,$78 1848 | ld [$c60f],a 1849 | ld a,[$cc40] 1850 | ld c,a 1851 | ld a,[$cc41] 1852 | ld h,a 1853 | call Function15C 1854 | ld a,$01 1855 | ld [$ffff],a 1856 | ld [$cc94],a 1857 | ld a,$e3 1858 | ld [$de8a],a 1859 | ld [$ff40],a 1860 | ld hl,$ccb2 1861 | inc [hl] 1862 | inc [hl] 1863 | jp Function1B79E 1864 | 1865 | Function1B8C5: ; $6:78C5 1866 | ld a,[$C60D] 1867 | cp $81 1868 | jr c,.next 1869 | ld a,[$C60C] 1870 | add $A0 1871 | ld [$C60C],a 1872 | ld a,[$C60D] 1873 | adc $FF 1874 | ld [$C60D],a 1875 | jp Function1BDE8 1876 | .next 1877 | ld hl,$D9FF 1878 | ld a,[hl] 1879 | cp $90 1880 | jr nc,.next2 1881 | inc [hl] 1882 | jp Function1BDE8 1883 | .next2 1884 | ld [hl],0 1885 | ld hl,$CCB2 1886 | inc [hl] 1887 | inc [hl] 1888 | xor a 1889 | ld [$CC84],a 1890 | ld a,$56 1891 | ld [$CC88],a 1892 | ld a,$65 1893 | ld [$CC89],a 1894 | jp Function1BDE8 1895 | 1896 | Function1B903: ; $6:7903 1897 | ld a,$C 1898 | ld [$D841],a 1899 | jp Function1B9BB 1900 | 1901 | Function1B90B: ; $6:790B 1902 | ld a,4 1903 | ld [$D842],a 1904 | jp Function1BAA4 1905 | 1906 | Function1B913: ; $6:7913 1907 | ld a,$14 1908 | ld [$D841],a 1909 | ld a,$80 1910 | ld [$C3B4],a 1911 | ld a,$20 1912 | ld [$C653],a 1913 | ld a,6 1914 | ld [$C65B],a 1915 | ld a,$14 1916 | call Function20C 1917 | ld hl,$6C56 1918 | jp Function1BA42 1919 | 1920 | Function1B932: ; $6:7932 1921 | ld a,$14 1922 | ld [$D842],a 1923 | jp Function1BAA4 1924 | 1925 | Function1B93A: ; $6:793A 1926 | ld a,$1C 1927 | ld [$D841],a 1928 | ld a,$80 1929 | ld [$C3B4],a 1930 | ld a,$20 1931 | ld [$C653],a 1932 | ld a,6 1933 | ld [$C65B],a 1934 | ld a,$2F 1935 | call Function20C 1936 | ld a,$30 1937 | call Function20C 1938 | ld a,$37 1939 | call Function20C 1940 | ld hl,$6C65 1941 | jp Function1BA42 1942 | 1943 | Function1B963: ; $6:7963 1944 | ld a,$1C 1945 | ld [$D842],a 1946 | jp Function1BAA4 1947 | 1948 | Function1B96B: ; $6:796B 1949 | ld a,$24 1950 | ld [$D841],a 1951 | jp Function1B9BB 1952 | 1953 | Function1B973: ; $6:7973 1954 | ld a,$1C 1955 | ld [$D842],a 1956 | jp Function1BAA4 1957 | 1958 | Function1B97B: ; $6:797B 1959 | ld a,$30 1960 | ld [$D841],a 1961 | ld de,$9800 1962 | ld hl,$9C00 1963 | ld bc,$400 1964 | ld a,6 1965 | bankswitch 1966 | call Function183 1967 | ld a,$80 1968 | ld [$C3B4],a 1969 | ld a,$20 1970 | ld [$C653],a 1971 | ld a,6 1972 | ld [$C65B],a 1973 | ld a,$19 1974 | call Function20C 1975 | ld a,$43 1976 | call Function20C 1977 | ld hl,$6C88 1978 | jp Function1BA42 1979 | 1980 | Function1B9B3: ; $6:79B3 1981 | ld a,$30 1982 | ld [$D842],a 1983 | jp Function1BAA4 1984 | 1985 | Function1B9BB: ; $6:79BB 1986 | xor a 1987 | ld hl,$C3C5 1988 | ld [hli],a 1989 | ld [hl],a 1990 | ld hl,$C640 1991 | ld bc,$0040 1992 | xor a 1993 | call Function174 1994 | ld a,[$CC84] 1995 | ld e,a 1996 | ld d,0 1997 | add 4 1998 | ld [$CC84],a 1999 | ld hl,$64B4 2000 | add hl,de 2001 | ld a,[hl] 2002 | ld [$CC86],a 2003 | cp 0 2004 | jr nz,.next 2005 | inc e 2006 | ld a,e 2007 | ld [$CC84],a 2008 | ld a,[$D841] 2009 | ld [$CCB2],a 2010 | jp Function1BDE8 2011 | .next 2012 | ld a,$80 2013 | ld [$C3B4],a 2014 | push hl 2015 | ld a,[$CC82] 2016 | ld e,a 2017 | ld a,[$CC83] 2018 | ld d,a 2019 | ld a,[$CC86] 2020 | call Function1BEDA 2021 | ld a,5 2022 | add l 2023 | ld l,a 2024 | ld a,0 2025 | adc h 2026 | ld h,a 2027 | ld a,[hl] 2028 | ld [$C653],a 2029 | ld a,2 2030 | add l 2031 | ld l,a 2032 | ld a,0 2033 | adc h 2034 | ld h,a 2035 | ld a,[hl] 2036 | ld [$C645],a 2037 | ld a,3 2038 | add l 2039 | ld l,a 2040 | ld a,0 2041 | adc h 2042 | ld h,a 2043 | ld a,[hl] 2044 | ld [$C65B],a 2045 | ld a,[$C645] 2046 | call Function20C 2047 | ld c,$15 2048 | ld de,$7F02 2049 | call Function1BEF4 2050 | pop hl 2051 | inc hl 2052 | ld a,[hli] 2053 | ld [$C660],a 2054 | ld a,[hli] 2055 | ld h,[hl] 2056 | ld l,a 2057 | call $C0B0 2058 | Function1BA42: ; $6:7A42 2059 | ld a,4 2060 | add l 2061 | ld l,a 2062 | ld a,0 2063 | adc h 2064 | ld h,a 2065 | ld a,l 2066 | ld [$C655],a 2067 | ld a,h 2068 | ld [$C656],a 2069 | ld a,$15 2070 | ld [$C65C],a 2071 | call Function1A4 2072 | ld [$C650],a 2073 | ld a,$F0 2074 | ld [$CC85],a 2075 | ld c,$18 2076 | ld de,$7F17 2077 | call Function1BEF4 2078 | ld a,$C2 2079 | ld [$CC8A],a 2080 | ld a,$99 2081 | ld [$CC8B],a 2082 | ld a,4 2083 | ld [$CC87],a 2084 | ld a,$A 2085 | ld [$CC8E],a 2086 | xor a 2087 | ld [$CC8F],a 2088 | ld a,[$6745] 2089 | ld [$DE95],a 2090 | ld de,$99C0 2091 | ld hl,$9800 2092 | ld bc,$0040 2093 | ld a,6 2094 | bankswitch 2095 | call Function183 2096 | ld hl,$CCB2 2097 | inc [hl] 2098 | inc [hl] 2099 | jp Function1BDE8 2100 | 2101 | Function1BAA4: ; $6:7AA4 2102 | ld hl,$CC85 2103 | dec [hl] 2104 | jr nz,.next 2105 | ld hl,$CCB2 2106 | inc [hl] 2107 | inc [hl] 2108 | .next 2109 | call Function1BD51 2110 | Function1BAB2: ; $6:7AB2 2111 | ld a,$3C 2112 | ld [$FFA2],a 2113 | ld a,[$C660] 2114 | add $30 2115 | ld [$FFA3],a 2116 | ld a,[$C653] 2117 | and $20 2118 | swap a 2119 | srl a 2120 | ld [$CE57],a 2121 | ld a,$10 2122 | ld [$D3EA],a 2123 | ld a,$80 2124 | ld [$CE55],a 2125 | ld a,[$C655] 2126 | ld l,a 2127 | ld a,[$C656] 2128 | ld h,a 2129 | call $C0B0 2130 | jp Function1BDE8 2131 | 2132 | Function1BAE1: ; $6:7AE1 2133 | ld a,[$CC8E] 2134 | or a 2135 | jr z,.next 2136 | dec a 2137 | ld [$CC8E],a 2138 | jp Function1BAB2 2139 | .next 2140 | ld hl,$6744 2141 | ld a,$A 2142 | ld [$CC8E],a 2143 | ld a,[$CC8F] 2144 | ld b,a 2145 | sla a 2146 | add l 2147 | ld l,a 2148 | ld a,0 2149 | adc h 2150 | ld h,a 2151 | ld a,[hli] 2152 | ld [$FF49],a 2153 | ld a,[hl] 2154 | ld [$DE95],a 2155 | ld a,b 2156 | cp 6 2157 | jr nz,.next2 2158 | ld hl,$CCB2 2159 | inc [hl] 2160 | inc [hl] 2161 | .next2 2162 | ld a,b 2163 | inc a 2164 | ld [$CC8F],a 2165 | cp $B 2166 | jp c,$7AB2 2167 | ld a,[$D842] 2168 | ld [$CCB2],a 2169 | ld a,[$C650] 2170 | call Function1A7 2171 | ld a,$40 2172 | ld [$C650],a 2173 | jp Function1BDE8 2174 | 2175 | Function1BB31: ; $6:7B31 2176 | ld a,0 2177 | ld [$DE95],a 2178 | ld a,$11 ; wily machine? 2179 | call Function22D 2180 | ld hl,$00C0 2181 | ld de,$8800 2182 | ld bc,$0040 2183 | call Function183 2184 | ld hl,$6CAB 2185 | ld de,$9800 2186 | call Function1BDBF 2187 | ld a,$28 2188 | ld [$CC88],a 2189 | ld a,$67 2190 | ld [$CC89],a 2191 | ld a,$C2 2192 | ld [$CC8A],a 2193 | ld a,$99 2194 | ld [$CC8B],a 2195 | ld a,4 2196 | ld [$CC87],a 2197 | ld a,$A 2198 | ld [$CC8E],a 2199 | xor a 2200 | ld [$CC8F],a 2201 | ld hl,$CCB2 2202 | inc [hl] 2203 | inc [hl] 2204 | jp Function1BDE8 2205 | 2206 | Function1BB7A: ; $6:7B7A 2207 | ld hl,$675A 2208 | ld a,7 2209 | ld [$D841],a 2210 | ld a,3 2211 | ld [$D842],a 2212 | call Function1BCF6 2213 | jr nc,.next 2214 | ld a,$2C 2215 | ld [$CC8C],a 2216 | ld a,1 2217 | ld [$CC8D],a 2218 | .next 2219 | ld a,[$CC8F] 2220 | cp 4 2221 | jr nz,.next2 2222 | call Function1BD51 2223 | .next2 2224 | jp Function1BDE8 2225 | 2226 | Function1BBA3: ; $6:7BA3 2227 | ld hl,$D9FF 2228 | ld a,[hl] 2229 | cp $B4 2230 | jr nc,.next 2231 | inc [hl] 2232 | cp $78 2233 | jp c,$7DE8 2234 | jr .next2 2235 | .next 2236 | ld hl,$6762 2237 | ld a,3 2238 | ld [$D841],a 2239 | ld a,$FF 2240 | ld [$D842],a 2241 | call Function1BD0C 2242 | .next2 2243 | ld a,[$CC40] 2244 | ld c,a 2245 | ld a,[$CC41] 2246 | ld h,a 2247 | call Function15C 2248 | jp Function1BDED 2249 | 2250 | Function1BBD1: ; $6:7BD1 2251 | ld hl,$6EC3 2252 | ld bc,$0740 2253 | ld de,$9000 2254 | call Function183 2255 | ld hl,$7603 2256 | ld de,$9800 2257 | call Function1BDBF 2258 | ld hl,$CCB2 2259 | inc [hl] 2260 | inc [hl] 2261 | jp Function1BDED 2262 | 2263 | Function1BBEE: ; $6:7BEE 2264 | ld hl,$6766 2265 | ld a,7 2266 | ld [$D841],a 2267 | ld a,3 2268 | ld [$D842],a 2269 | call Function1BCF6 2270 | jr nc,.next 2271 | ld a,$48 2272 | ld [$CC8C],a 2273 | ld a,3 2274 | ld [$CC8D],a 2275 | .next 2276 | jp Function1BDED 2277 | 2278 | Function1BC0D: ; $6:7C0D 2279 | call Function1BEE8 2280 | ld hl,$00C0 2281 | ld de,$9000 2282 | ld bc,$0040 2283 | call Function183 2284 | ld a,$12 2285 | call Function22D 2286 | ld a,$D0 2287 | ld [$FF49],a 2288 | ld hl,$CC84 2289 | ld [hli],a 2290 | ld [hli],a 2291 | ld [hli],a 2292 | ld [hli],a 2293 | ld [hli],a 2294 | ld [hl],a 2295 | ld de,$9800 2296 | ld hl,$9C00 2297 | ld bc,$0400 2298 | ld a,6 2299 | bankswitch 2300 | call Function183 2301 | ld a,[$776B] 2302 | ld [$D841],a 2303 | ld hl,$776C 2304 | .loop 2305 | ld a,[hli] 2306 | ld [$D842],a 2307 | ld a,[hli] 2308 | ld e,a 2309 | ld a,[hli] 2310 | ld d,a 2311 | push hl 2312 | ld a,[$D842] 2313 | ld c,a 2314 | ld b,0 2315 | call Function183 2316 | pop hl 2317 | ld a,[$D842] 2318 | add l 2319 | ld l,a 2320 | ld a,0 2321 | adc h 2322 | ld h,a 2323 | ld a,[$D841] 2324 | dec a 2325 | ld [$D841],a 2326 | jr nz,.loop 2327 | ld hl,$CCB2 2328 | inc [hl] 2329 | inc [hl] 2330 | jp Function1BDED 2331 | 2332 | Function1BC78: ; $6:7C78 2333 | ld hl,$D9FF 2334 | ld a,[hl] 2335 | cp $B4 2336 | jr nc,.next 2337 | inc [hl] 2338 | jp Function1BDED 2339 | .next 2340 | ld hl,$676E 2341 | ld a,3 2342 | ld [$D841],a 2343 | ld a,$FF 2344 | ld [$D842],a 2345 | call Function1BD0C 2346 | ld a,$2C 2347 | ld [$CC8C],a 2348 | ld a,1 2349 | ld [$CC8D],a 2350 | jp Function1BDED 2351 | 2352 | Function1BCA1: ; $6:7CA1 2353 | ld a,$40 2354 | ld [$CC9D],a 2355 | ld a,$C0 2356 | ld [$CC9E],a 2357 | call Function1BE32 2358 | call Function1BF3E 2359 | jp Function1BDED 2360 | 2361 | Function1BCB4: ; $6:7CB4 2362 | rst 8 2363 | ld a,[bc] 2364 | ld hl,$CCB2 2365 | inc [hl] 2366 | inc [hl] 2367 | Function1BCBB: ; $6:7CBB 2368 | ld hl,$676A 2369 | ld a,3 2370 | ld [$D841],a 2371 | ld a,$FF 2372 | ld [$D842],a 2373 | call Function1BD0C 2374 | ld a,[$CC8E] 2375 | cp $A 2376 | jr nz,.next 2377 | ld a,[$CC8F] 2378 | dec a 2379 | add a 2380 | ld hl,$6753 2381 | add l 2382 | ld l,a 2383 | ld a,0 2384 | adc h 2385 | ld h,a 2386 | ld a,[hl] 2387 | ld [$FF48],a 2388 | .next 2389 | ld a,$40 2390 | ld [$CC9D],a 2391 | ld a,$C0 2392 | ld [$CC9E],a 2393 | call Function1BE32 2394 | call Function1BF3E 2395 | jp Function1BDED 2396 | 2397 | Function1BCF6: ; $6:7CF6 2398 | ld a,[$CC8C] 2399 | ld e,a 2400 | ld a,[$CC8D] 2401 | ld d,a 2402 | ld a,e 2403 | or d 2404 | jr z,Function1BD0C 2405 | dec de 2406 | ld a,e 2407 | ld [$CC8C],a 2408 | ld a,d 2409 | ld [$CC8D],a 2410 | ret 2411 | 2412 | Function1BD0C: ; $6:7D0C 2413 | ld a,[$CC8E] 2414 | or a 2415 | jr z,.next2 2416 | dec a 2417 | ld [$CC8E],a 2418 | xor a 2419 | ret 2420 | .next2 2421 | ld a,[$D841] 2422 | ld e,a 2423 | ld a,[$D842] 2424 | ld d,a 2425 | ld a,$A 2426 | ld [$CC8E],a 2427 | ld a,[$CC8F] 2428 | ld b,a 2429 | add l 2430 | ld l,a 2431 | ld a,0 2432 | adc h 2433 | ld h,a 2434 | ld a,[hl] 2435 | ld [$DE95],a 2436 | ld a,b 2437 | inc a 2438 | ld [$CC8F],a 2439 | ld a,b 2440 | cp d 2441 | jr nz,.next3 2442 | scf 2443 | ret 2444 | .next3 2445 | cp e 2446 | jr c,.next4 2447 | ld hl,$CCB2 2448 | inc [hl] 2449 | inc [hl] 2450 | ld a,$A 2451 | ld [$CC8E],a 2452 | xor a 2453 | ld [$CC8F],a 2454 | .next4 2455 | xor a 2456 | ret 2457 | 2458 | Function1BD51: ; $6:7D51 2459 | ld a,[$cc87] 2460 | cp $ff 2461 | ret z 2462 | or a 2463 | jr z,.next 2464 | dec a 2465 | ld [$cc87],a 2466 | ret 2467 | .next 2468 | ld a,$04 2469 | ld [$cc87],a 2470 | ld a,[$cc8a] 2471 | ld e,a 2472 | ld a,[$cc8b] 2473 | ld d,a 2474 | ld a,[$cc88] 2475 | ld l,a 2476 | ld a,[$cc89] 2477 | ld h,a 2478 | .loop 2479 | ld a,[hl] 2480 | cp $00 2481 | ret z 2482 | cp $0d 2483 | jr nz,.next2 2484 | ld de,$99e2 2485 | inc hl 2486 | jr .loop 2487 | .next2 2488 | cp $0e 2489 | jr nz,.next3 2490 | ld a,$ff 2491 | ld [$cc87],a 2492 | jr .next4 2493 | .next3 2494 | cp $0a 2495 | jr nc,.next5 2496 | add e 2497 | ld e,a 2498 | ld a,$00 2499 | adc d 2500 | ld d,a 2501 | inc hl 2502 | jr .loop 2503 | .next5 2504 | push hl 2505 | push de 2506 | ld a,$06 2507 | ld [$de93],a 2508 | ld [$2100],a 2509 | ld bc,$0001 2510 | call Function183 2511 | pop de 2512 | pop hl 2513 | .next4 2514 | inc de 2515 | inc hl 2516 | ld a,e 2517 | ld [$cc8a],a 2518 | ld a,d 2519 | ld [$cc8b],a 2520 | ld a,l 2521 | ld [$cc88],a 2522 | ld a,h 2523 | ld [$cc89],a 2524 | ret 2525 | 2526 | Function1BDBF: ; $6:7DBF 2527 | ld a,$12 2528 | ld [$D841],a 2529 | .loop 2530 | ld bc,$0014 2531 | push hl 2532 | push de 2533 | call Function183 2534 | pop de 2535 | pop hl 2536 | ld a,$14 2537 | add l 2538 | ld l,a 2539 | ld a,0 2540 | adc h 2541 | ld h,a 2542 | ld a,$20 2543 | add e 2544 | ld e,a 2545 | ld a,0 2546 | adc d 2547 | ld d,a 2548 | ld a,[$D841] 2549 | dec a 2550 | ld [$D841],a 2551 | jr nz,.loop 2552 | ret 2553 | 2554 | Function1BDE8: ; $6:7DE8 2555 | ld de,$6B92 2556 | jr Function1BDF0 2557 | Function1BDED: ; $6:7DED 2558 | ld de,$6B9A 2559 | Function1BDF0: ; $6:7DF0 2560 | ld a,[$CC40] 2561 | ld c,a 2562 | ld a,[$CC41] 2563 | ld h,a 2564 | call Function15F 2565 | ld hl,$6B9F 2566 | ld a,b 2567 | add a 2568 | add l 2569 | ld l,a 2570 | ld a,0 2571 | adc h 2572 | ld h,a 2573 | ld a,[hl] 2574 | inc hl 2575 | ld h,[hl] 2576 | ld l,a 2577 | ld a,4 2578 | add l 2579 | ld l,a 2580 | ld a,0 2581 | adc h 2582 | ld h,a 2583 | ld a,[$C60D] 2584 | ld [$FFA2],a 2585 | ld a,[$C60F] 2586 | ld [$FFA3],a 2587 | ld a,1 2588 | ld [$CE57],a 2589 | xor a 2590 | ld [$D3EA],a 2591 | xor a 2592 | ld [$CE55],a 2593 | ld a,[$C610] 2594 | call Function1AA 2595 | jp Function1B79E 2596 | 2597 | Function1BE32: ; $6:7E32 2598 | xor a 2599 | ld [$cc97],a 2600 | call Function1BE86 2601 | ld hl,$7ebc 2602 | ld a,[$cc9d] 2603 | ld e,a 2604 | ld a,[$cc9e] 2605 | ld d,a 2606 | ld b,$0f 2607 | .loop 2608 | ld a,b 2609 | cp $06 2610 | jr c,.next1 2611 | cp $0b 2612 | jr c,.next2 2613 | push bc 2614 | ld a,[$cc81] 2615 | ld b,a 2616 | ld a,[$cc84] 2617 | ld c,a 2618 | call Function1BEAD 2619 | pop bc 2620 | jr .next3 2621 | .next1 2622 | push bc 2623 | ld a,[$cc83] 2624 | ld b,a 2625 | ld a,[$cc86] 2626 | ld c,a 2627 | call Function1BEAD 2628 | pop bc 2629 | jr .next3 2630 | .next2 2631 | push bc 2632 | ld a,[$cc82] 2633 | ld b,a 2634 | ld a,[$cc85] 2635 | ld c,a 2636 | call Function1BEAD 2637 | pop bc 2638 | .next3 2639 | dec b 2640 | jr nz,.loop 2641 | ld a,e 2642 | ld [$cc9d],a 2643 | ld a,d 2644 | ld [$cc9e],a 2645 | ret 2646 | 2647 | Function1BE86: ; $6:7E86 2648 | ld a,[$CC81] 2649 | add 2 2650 | ld c,a 2651 | ld [$CC81],a 2652 | sla a 2653 | ld [$CC83],a 2654 | add c 2655 | rra 2656 | ld [$CC82],a 2657 | ld a,[$CC84] 2658 | sub 2 2659 | ld c,a 2660 | ld [$CC84],a 2661 | sla a 2662 | ld [$CC86],a 2663 | add c 2664 | rra 2665 | ld [$CC85],a 2666 | ret 2667 | 2668 | Function1BEAD: ; $6:7EAD 2669 | ld a,[hl] 2670 | add b 2671 | ld [de],a 2672 | inc de 2673 | ld a,[hli] 2674 | add c 2675 | ld [de],a 2676 | inc de 2677 | ld a,[hli] 2678 | ld [de],a 2679 | inc de 2680 | xor a 2681 | ld [de],a 2682 | inc de 2683 | ret 2684 | 2685 | Data1BEBC: ; $6:7EBC 2686 | INCBIN "base3.gb",$1BEBC,$1BEDA-$1BEBC 2687 | 2688 | Function1BEDA: ; $6:7EDA 2689 | push de 2690 | dec a 2691 | ld l,a 2692 | ld h,0 2693 | add hl,hl 2694 | add hl,hl 2695 | ld e,l 2696 | ld d,h 2697 | add hl,hl 2698 | add hl,de 2699 | pop de 2700 | add hl,de 2701 | ret 2702 | 2703 | Function1BEE8: ; $6:7EE8 2704 | ld hl,$46BC 2705 | ld bc,$400 2706 | ld de,$9200 2707 | jp Function183 2708 | 2709 | Function1BEF4: ; $6:7EF4 2710 | ld hl,$C0B0 2711 | jr .next 2712 | .loop 2713 | ld a,[de] 2714 | ld [hli],a 2715 | inc de 2716 | dec c 2717 | .next 2718 | ld a,c 2719 | or a 2720 | jr nz,.loop 2721 | ret 2722 | 2723 | Function1BF02: ; $6:7F02 2724 | ld a,[$C65B] 2725 | bankswitch 2726 | ld a,[hli] 2727 | ld h,[hl] 2728 | ld l,a 2729 | ld a,6 2730 | bankswitch 2731 | ret 2732 | 2733 | Function1BF17: ; $6:7F17 2734 | ld a,[$C65B] 2735 | bankswitch 2736 | ld a,[$C650] 2737 | call Function1AA 2738 | ld a,6 2739 | bankswitch 2740 | ret 2741 | 2742 | Function1BF2F: ; $6:7F2F 2743 | ld hl,$C000 2744 | ld de,4 2745 | ld bc,$28A0 2746 | .loop 2747 | ld [hl],c 2748 | add hl,de 2749 | dec b 2750 | jr nz,.loop 2751 | ret 2752 | 2753 | Function1BF3E: ; $6:7F3E 2754 | ld a,[$CC9D] 2755 | ld l,a 2756 | ld a,[$CC9E] 2757 | ld h,a 2758 | ld a,l 2759 | .loop 2760 | cp $A0 2761 | jr z,.done 2762 | ld a,$A0 2763 | ld [hl],a 2764 | ld a,4 2765 | add l 2766 | ld l,a 2767 | jr .loop 2768 | .done 2769 | ret 2770 | 2771 | INCBIN "base3.gb",$1BF55,$1C000-$1BF55 2772 | 2773 | SECTION "bank7",ROMX,BANK[$7] 2774 | INCBIN "base3.gb",$1C000,$4000 2775 | 2776 | SECTION "bank8",ROMX,BANK[$8] 2777 | INCBIN "base3.gb",$20000,$4000 2778 | 2779 | SECTION "bank9",ROMX,BANK[$9] 2780 | Function24000: 2781 | jp $45D1 2782 | Function24003: 2783 | jp $49E7 2784 | Function24006: 2785 | jp $4C03 2786 | Function24009: 2787 | jp $4D5E 2788 | Function2400C: 2789 | jp $4FAD 2790 | Function2400F: 2791 | jp $526F 2792 | Function24012: 2793 | jp $5418 2794 | Function24015: 2795 | jp $55E1 2796 | Function24018: 2797 | jp $575B 2798 | Function2401B: 2799 | jp $5DFB 2800 | Function2401E: 2801 | jp $6013 2802 | Function24021: 2803 | jp $60A4 2804 | Function24024: 2805 | jp $61C5 2806 | Function24027: 2807 | jp $6330 2808 | Function2402A: 2809 | jp $641B 2810 | Function2402D: 2811 | jp $6622 2812 | Function24030: 2813 | jp $6866 2814 | Function24033: 2815 | jp $6BB7 2816 | Function24036: 2817 | jp $7127 2818 | Function24039: 2819 | jp $716D 2820 | Function2403C: 2821 | jp $7337 2822 | Function2403F: 2823 | jp $7483 2824 | Function24042: 2825 | jp $7638 2826 | Function24045: 2827 | jp $7906 2828 | Function24048: 2829 | jp $7ADD 2830 | 2831 | INCBIN "base3.gb",$2404B,$28000-$2404B 2832 | 2833 | SECTION "bankA",ROMX,BANK[$A] 2834 | Function28000: 2835 | jp $74c1 2836 | INCBIN "base3.gb",$28003,$2c000-$28003 2837 | 2838 | SECTION "bankB",ROMX,BANK[$B] 2839 | Function2C000: 2840 | jp $402f 2841 | Function2C003: 2842 | jp $4272 2843 | Function2C006: 2844 | jp $4851 2845 | INCBIN "base3.gb",$2C009,$30000-$2C009 2846 | 2847 | SECTION "bankC",ROMX,BANK[$C] 2848 | Pointers30000: 2849 | dw Data30018 2850 | dw $40c8 2851 | dw $40cd 2852 | dw $40dc 2853 | dw $40d7 2854 | dw $40d2 2855 | dw $40e6 2856 | dw $40f5 2857 | dw $40f0 2858 | dw $40e1 2859 | dw $40e1 2860 | dw $40eb 2861 | 2862 | Data30018: 2863 | INCBIN "base3.gb",$30018,$34000-$30018 2864 | 2865 | SECTION "bankD",ROMX,BANK[$D] 2866 | Function34000: 2867 | jp $7D00 2868 | Function34003: 2869 | jp $7DBA 2870 | Function34006: 2871 | jp $453D 2872 | Function34009: 2873 | jp $4795 2874 | Function3400C: 2875 | jp $4889 2876 | Function3400F: 2877 | jp $4B38 2878 | Function34012: 2879 | jp $4D73 2880 | Function34015: 2881 | jp $4EF3 2882 | Function34018: 2883 | jp $50C8 2884 | Function3401B: 2885 | jp $565A 2886 | Function3401E: 2887 | jp $7E3C 2888 | Function34021: 2889 | jp $57E0 2890 | Function34024: 2891 | jp $5A42 2892 | Function34027: 2893 | jp $5D08 2894 | Function3402A: 2895 | jp $5EA4 2896 | Function3402D: 2897 | jp $6074 2898 | Function34030: 2899 | jp $61FE 2900 | Function34033: 2901 | jp $642D 2902 | Function34036: 2903 | jp $65AB 2904 | Function34039: 2905 | jp $66DF 2906 | Function3403C: 2907 | jp $67D1 2908 | Function3403F: 2909 | jp $6AE5 2910 | Function34042: 2911 | jp $6BE8 2912 | Function34045: 2913 | jp $7A25 2914 | Function34048: 2915 | jp $6E33 2916 | Function3404B: 2917 | jp $70D5 2918 | Function3404E: 2919 | jp $73D8 2920 | Function34051: 2921 | jp $7483 2922 | Function34054: 2923 | jp $74FC 2924 | 2925 | INCBIN "base3.gb",$34057,$38000-$34057 2926 | 2927 | SECTION "bankE",ROMX,BANK[$E] 2928 | Function38000: 2929 | jp $4566 2930 | Function38003: 2931 | jp $488b 2932 | Function38006: 2933 | jp $4d31 2934 | Function38009: 2935 | jp $52f0 2936 | Function3800C: 2937 | jp $6f94 2938 | Function3800F: 2939 | jp $581a 2940 | 2941 | INCBIN "base3.gb",$38012,$3c000-$38012 2942 | 2943 | SECTION "bankF",ROMX,BANK[$F] 2944 | Function3C000: 2945 | jp $4105 2946 | Function3C003: 2947 | jp $403e 2948 | Function3C006: 2949 | jp $48a7 2950 | Function3C009: 2951 | jp $4d7e 2952 | Function3C00C: 2953 | jp $55e6 2954 | Function3C00F: 2955 | jp $5432 2956 | Function3C012: 2957 | jp $5b25 2958 | Function3C015: 2959 | jp $5b5c 2960 | INCBIN "base3.gb",$3C018,$3C65B-$3C018 2961 | 2962 | DrawShutters: 2963 | ld [$CC81],a ; bug? 2964 | bit 0,a 2965 | jr z,.next1 2966 | ld a,3 2967 | call Function230 2968 | .next1 2969 | ld a,[$CC81] 2970 | bit 1,a 2971 | jr z,.next2 2972 | ld a,4 2973 | call Function230 2974 | .next2 2975 | ld a,[$CC81] 2976 | bit 2,a 2977 | jr z,.next3 2978 | ld a,5 2979 | call Function230 2980 | .next3 2981 | ld a,[$CC81] 2982 | bit 3,a 2983 | jr z,.next4 2984 | ld a,6 2985 | call Function230 2986 | .next4 2987 | ret 2988 | 2989 | INCBIN "base3.gb",$3C68C,$3F59C-$3C68C 2990 | 2991 | ; $3F59C 2992 | StageSelectTilemap: 2993 | INCBIN "base3.gb",$3F59C,20 2994 | 2995 | INCBIN "base3.gb",$3F5B0,$40000-$3F5B0 2996 | -------------------------------------------------------------------------------- /4.s: -------------------------------------------------------------------------------- 1 | include "text.charmap" 2 | 3 | bankswitch: MACRO 4 | rst $20 5 | ENDM 6 | 7 | ; $DF3D is the number of P chips 8 | 9 | SECTION "func0",ROM0[0] 10 | Func0: 11 | di 12 | ld sp,$FFFE 13 | jp Function150 14 | 15 | SECTION "func8",ROM0[8] 16 | Func8: 17 | ld a,l 18 | ld [$CF78],a 19 | ld a,h 20 | jp $915 21 | 22 | SECTION "func10",ROM0[$10] 23 | Func10: 24 | ld [$CF7A],a 25 | ld a,l 26 | jp $31E 27 | 28 | SECTION "func18",ROM0[$18] 29 | Func18: 30 | ld a,[$DF03] 31 | cp $2B 32 | ret 33 | 34 | SECTION "func20",ROM0[$20] 35 | Bankswitch: ; $20 36 | ld [$DF00],a 37 | ld [$2100],a 38 | ret 39 | 40 | SECTION "vblank",ROM0[$40] 41 | jp $486 42 | 43 | SECTION "lcdc",ROM0[$48] 44 | jp $74B 45 | db $01,$1D,$FF 46 | 47 | SECTION "timer",ROM0[$50] 48 | reti 49 | 50 | SECTION "serial",ROM0[$58] 51 | reti 52 | 53 | SECTION "joypad",ROM0[$60] 54 | reti 55 | 56 | db $01,$02,$04,$08,$10,$20,$40,$80 57 | db 0,0,0,0,0,0 58 | db $11,$FF,$80,$00 59 | 60 | SECTION "unknownhome",ROM0[$D0] 61 | INCBIN "base4.gb",$D0,$30 62 | 63 | SECTION "header",ROM0[$100] 64 | nop 65 | jp $3F4D 66 | 67 | SECTION "start",ROM0[$150] 68 | 69 | Function150: 70 | jp Function472 71 | Function153: 72 | jp $2233 73 | Function156: 74 | jp $3D2C 75 | Function159: 76 | jp $3D38 77 | Function15C: 78 | jp $2D8E 79 | Function15F: 80 | jp $2D96 81 | Function162: 82 | jp $03CD 83 | Function165: 84 | jp $0E1A 85 | Function168: 86 | jp $196A 87 | Function16B: 88 | jp $18AB 89 | Function16E: 90 | jp $1BD3 91 | Function171: 92 | jp $1BDE 93 | Function174: 94 | jp $1932 95 | Copy8: ; $177 96 | jp Function18D0 97 | Copy4: ; $17A 98 | jp Function18DC 99 | Copy2: ; $17D 100 | jp Function18E2 101 | Function180: 102 | jp Function18F6 103 | Function183: 104 | jp $1B0D 105 | Function186: 106 | jp $1A81 107 | Function189: 108 | jp $1AE9 109 | Function18C: 110 | jp $0000 111 | Function18F: 112 | jp $2598 113 | Function192: 114 | jp $25B3 115 | Function195: 116 | jp $2568 117 | Function198: 118 | jp $25A9 119 | Function19B: 120 | jp $2E96 121 | Function19E: 122 | jp $32EB 123 | Function1A1: 124 | jp $32FE 125 | Function1A4: 126 | jp $322D 127 | Function1A7: 128 | jp $3263 129 | Function1AA: 130 | jp $2F54 131 | Function1AD: 132 | jp $2CCE 133 | Function1B0: 134 | jp $2CDA 135 | Function1B3: 136 | jp $2CE9 137 | Function1B6: 138 | jp $2BE8 139 | Function1B9: 140 | jp $32DC 141 | Function1BC: 142 | jp $0ED3 143 | Function1BF: 144 | jp $3BCF 145 | Function1C2: 146 | jp $1D0B 147 | Function1C5: 148 | jp $1879 149 | Function1C8: 150 | jp $175F 151 | Function1CB: 152 | jp $0348 153 | Function1CE: 154 | jp $1D1C 155 | Function1D1: 156 | jp $3370 157 | Function1D4: 158 | jp $1D33 159 | Function1D7: 160 | jp $2BCE 161 | Function1DA: 162 | jp $2BE0 163 | Function1DD: 164 | jp $2C03 165 | Function1E0: 166 | jp $2C11 167 | Function1E3: 168 | jp $2C21 169 | Function1E6: 170 | jp $2CF7 171 | Function1E9: 172 | jp $2CFB 173 | Function1EC: 174 | jp $1BEC 175 | Function1EF: 176 | jp $2D01 177 | Function1F2: 178 | jp $2D12 179 | Function1F5: 180 | jp $041D 181 | Function1F8: 182 | jp $2D25 183 | Function1FB: 184 | jp $2D2D 185 | Function1FE: 186 | jp $2CC2 187 | Function201: 188 | jp $2CA9 189 | Function204: 190 | jp $2CB3 191 | Function207: 192 | jp $21A4 193 | Function20A: 194 | jp $21A4 195 | Function20D: 196 | jp $2162 197 | Function210: 198 | jp $3325 199 | Function213: 200 | jp $1BFA 201 | Function216: 202 | jp $0F9C 203 | Function219: 204 | jp $2563 205 | Function21C: 206 | jp $2D81 207 | Function21F: 208 | jp $109B 209 | Function222: 210 | jp $0923 211 | Function225: 212 | jp $08F0 213 | Function228: 214 | jp $1E49 215 | Function22B: 216 | jp $1E49 217 | Function22E: 218 | jp $1EA4 219 | Function231: 220 | jp $1FC5 221 | Function234: 222 | jp $1ED0 223 | Function237: 224 | jp $1ED0 225 | Function23A: 226 | jp $0BBB 227 | Function23D: 228 | jp $1FF4 229 | Function240: 230 | jp $204B 231 | Function243: 232 | jp $183E 233 | Function246: 234 | jp $03B8 235 | Function249: 236 | jp $1081 237 | Function24C: 238 | jp $3AB3 239 | Function24F: 240 | jp $3A90 241 | Function252: 242 | jp $3B3F 243 | Function255: 244 | jp $1C35 245 | Function258: 246 | jp $2DE6 247 | Function25B: 248 | jp $2E09 249 | Function25E: 250 | jp $1CE1 251 | Function261: 252 | jp $1CF7 253 | Function264: 254 | jp $0435 255 | Function267: 256 | jp $2E7A 257 | Function26A: 258 | jp $1D11 259 | Function26D: 260 | jp $0FCA 261 | Function270: 262 | jp $1034 263 | Function273: 264 | jp $1046 265 | Function276: 266 | jp $2B65 267 | Function279: 268 | jp $17DB 269 | Function27C: 270 | jp $1051 271 | Function27F: 272 | jp $1275 273 | Function282: 274 | jp $1306 275 | Function285: 276 | jp $03E5 277 | Function288: 278 | jp $0F2B 279 | Function28B: 280 | jp $2F20 281 | Function28E: 282 | jp $193D 283 | Function291: 284 | jp $1800 285 | Function294: 286 | jp $1828 287 | Function297: 288 | jp $17F2 289 | Function29A: 290 | jp $0411 291 | Function29D: 292 | jp $040D 293 | Function2A0: 294 | jp $0C89 295 | Function2A3: 296 | jp $0C90 297 | Function2A6: 298 | jp $25A9 299 | Function2A9: 300 | jp Function47C 301 | Function2AC: 302 | jp $03A9 303 | Function2AF: 304 | jp $03A0 305 | Function2B2: 306 | jp $03B4 307 | Function2B5: 308 | jp $045D 309 | Function2B8: 310 | jp $0555 311 | Function2BB: 312 | jp $0578 313 | Function2BE: 314 | jp $0467 315 | Function2C1: 316 | jp $3DD8 317 | Function2C4: 318 | jp $09D1 319 | Function2C7: 320 | jp $0421 321 | Function2CA: 322 | jp $0449 323 | Function2CD: 324 | jp $0409 325 | Function2D0: 326 | jp $042D 327 | Function2D3: 328 | jp $0441 329 | Function2D6: 330 | jp $046E 331 | Function2D9: 332 | jp $0445 333 | Function2DC: 334 | jp $0459 335 | Function2DF: 336 | jp $02EE 337 | Function2E2: 338 | jp $02F2 339 | Function2E5: 340 | jp $02FA 341 | Function2E8: 342 | jp $0302 343 | Function2EB: 344 | jp $030A 345 | 346 | INCBIN "base4.gb",$2EE,$472-$2EE 347 | 348 | Function472: ; $472 349 | di 350 | ld sp,$FFFE 351 | ld a,1 352 | bankswitch 353 | jp $4000 354 | 355 | Function47C: ; $47C 356 | di 357 | ld sp,$FFFE 358 | ld a,1 359 | bankswitch 360 | jp $401C 361 | 362 | INCBIN "base4.gb",$486,$CAD-$486 363 | 364 | InitializeLives: ; $CAD 365 | ld a,3 366 | ld [$DF34],a 367 | call $C2D 368 | xor a 369 | ld [$DEAB],a 370 | ld [$DEE4],a 371 | jp $4496 372 | 373 | INCBIN "base4.gb",$CBF,$18D0-$CBF 374 | 375 | Function18D0: ; $18D0 376 | ld a,[de] 377 | inc de 378 | ld [hli],a 379 | ld a,[de] 380 | inc de 381 | ld [hli],a 382 | ld a,[de] 383 | inc de 384 | ld [hli],a 385 | ld a,[de] 386 | inc de 387 | ld [hli],a 388 | Function18DC: ; $18DC 389 | ld a,[de] 390 | inc de 391 | ld [hli],a 392 | ld a,[de] 393 | inc de 394 | ld [hli],a 395 | Function18E2: ; $18E2 396 | ld a,[de] 397 | inc de 398 | ld [hli],a 399 | ld a,[de] 400 | inc de 401 | ld [hli],a 402 | ret 403 | 404 | Function18E9: ; $18E9 405 | ld a,[hli] 406 | ld [de],a 407 | inc de 408 | ld a,[hli] 409 | ld [de],a 410 | inc de 411 | ld a,[hli] 412 | ld [de],a 413 | inc de 414 | ld a,[hli] 415 | ld [de],a 416 | inc de 417 | ret 418 | 419 | Function18F6: ; $18F6 420 | push af 421 | .loop 422 | ld a,[hli] 423 | ld [de],a 424 | inc de 425 | dec bc 426 | ld a,b 427 | or c 428 | jr nz,.loop 429 | pop af 430 | ret 431 | 432 | Function1901: ; $1901 433 | ld a,[hli] 434 | ld [de],a 435 | inc de 436 | ld a,[hli] 437 | ld [de],a 438 | inc de 439 | ld a,[hli] 440 | ld [de],a 441 | inc de 442 | ld a,[hli] 443 | ld [de],a 444 | inc de 445 | ld a,[hli] 446 | ld [de],a 447 | inc de 448 | ld a,[hli] 449 | ld [de],a 450 | inc de 451 | ld a,[hli] 452 | ld [de],a 453 | inc de 454 | ld a,[hli] 455 | ld [de],a 456 | inc de 457 | ld a,[hli] 458 | ld [de],a 459 | inc de 460 | ld a,[hli] 461 | ld [de],a 462 | inc de 463 | ld a,[hli] 464 | ld [de],a 465 | inc de 466 | ld a,[hli] 467 | ld [de],a 468 | inc de 469 | ld a,[hli] 470 | ld [de],a 471 | inc de 472 | ld a,[hli] 473 | ld [de],a 474 | inc de 475 | ld a,[hli] 476 | ld [de],a 477 | inc de 478 | ld a,[hli] 479 | ld [de],a 480 | inc de 481 | ret 482 | 483 | INCBIN "base4.gb",$1932,$4000-$1932 484 | 485 | SECTION "bank1",ROMX,BANK[$1] 486 | INCBIN "base4.gb",$4000,$4A1F-$4000 487 | 488 | Function4A1F: 489 | ld hl,$DF34 490 | inc [hl] 491 | ld a,[hl] 492 | cp 11 493 | jr c,.nextlife 494 | ld [hl],10 ; maximum of 9 extra lives 495 | ret 496 | .nextlife 497 | rst 8 498 | ld [de],a 499 | ret 500 | 501 | .bighealth 502 | ld d,10 503 | jr .healaddress 504 | .littlehealth 505 | ld d,2 506 | .healaddress 507 | ld hl,$DEAE 508 | jr .heal 509 | 510 | .bigweap 511 | ld d,10 512 | jr .weapaddress 513 | .littleweap 514 | ld d,2 515 | .weapaddress 516 | ld a,[$DEAB] ; current weapon 517 | or a 518 | jr z,.nomoreheal ; can't heal the buster 519 | add $AE ; $DEAE & $FF??? 520 | ld l,a 521 | ld h,$DE ; $DEAE >> 8??? 522 | ld a,[hl] 523 | cp $98 524 | jr nc,.nomoreheal 525 | .heal 526 | ld a,d 527 | ld [$D4C4],a 528 | ld a,l 529 | ld [$D4C2],a 530 | ld a,h 531 | ld [$D4C3],a 532 | ld hl,$DEBF 533 | set 1,[hl] 534 | xor a 535 | ld [$D4C1],a 536 | jr .next 537 | ld hl,$D4C1 538 | inc [hl] 539 | ld a,[hl] 540 | cp 4 541 | ret c 542 | xor a 543 | ld [hl],a 544 | .next 545 | ld hl,$D4C4 546 | ld a,[hl] 547 | or a 548 | jr z,.next2 549 | dec [hl] 550 | ld hl,$D4C2 551 | ld a,[hli] 552 | ld h,[hl] 553 | ld l,a 554 | ld a,[hl] 555 | cp $98 556 | jr nc,.next2 557 | rst 8 558 | rla 559 | ld a,8 560 | add [hl] 561 | ld [hl],a 562 | cp $98 563 | ret c 564 | ld [hl],$98 565 | ret 566 | .next2 567 | ld hl,$DEBF 568 | res 1,[hl] 569 | ret 570 | .nomoreheal 571 | ld a,[$DF3C] 572 | or a 573 | ret z 574 | push bc 575 | push de 576 | ld a,0 577 | ld [$FF8A],a 578 | ld a,0 579 | ld [$FF8B],a 580 | ld c,$99 581 | ld b,$C 582 | ld hl,$DEAF 583 | ld a,[$DEAC] 584 | ld e,a 585 | ld a,[$DEAD] 586 | ld d,a 587 | .next5 588 | srl d 589 | rr e 590 | .next3 591 | srl d 592 | rr e 593 | jr nc,.next4 594 | ld a,[hl] 595 | cp c 596 | jr nc,.next4 597 | ld c,a 598 | ld a,l 599 | ld [$FF8A],a 600 | ld a,h 601 | ld [$FF8B],a 602 | .next4 603 | inc hl 604 | dec b 605 | jr nz,.next3 606 | .next7 607 | pop de 608 | pop bc 609 | ld hl,$FF8A 610 | ld a,[hli] 611 | ld h,[hl] 612 | ld l,a 613 | ld a,h 614 | or l 615 | ret z 616 | jp $4A4F 617 | 618 | ld hl,$D40B 619 | ld a,[hl] 620 | or a 621 | ret z 622 | ld [hl],0 623 | ld b,a 624 | ld l,0 625 | .next6 626 | ld a,[hli] 627 | ld c, l 628 | push bc 629 | add $a 630 | ld l,a 631 | ld a,[hl] 632 | ld [hl],$40 633 | call $3263 634 | ld h,$D4 635 | pop bc 636 | ld l,c 637 | dec b 638 | jr nz,.next6 639 | 640 | ret 641 | 642 | INCBIN "base4.gb",$4AF9,$8000-$4AF9 643 | 644 | SECTION "bank2",ROMX,BANK[$2] 645 | Function8000: 646 | jp $4491 647 | Function8003: 648 | jp $43b8 649 | Function8006: 650 | jp $4d43 651 | Function8009: 652 | jp Function800C 653 | Function800C: 654 | INCBIN "base4.gb",$800c,$c000-$800c 655 | 656 | SECTION "bank3",ROMX,BANK[$3] 657 | FunctionC000: 658 | jp $474f 659 | FunctionC003: 660 | jp $47ed 661 | FunctionC006: 662 | jp $4b95 663 | FunctionC009: 664 | jp $4f99 665 | FunctionC00C: 666 | jp $5986 667 | FunctionC00F: 668 | jp $5487 669 | FunctionC012: 670 | jp $5ead 671 | FunctionC015: 672 | jp $630f 673 | FunctionC018: 674 | jp $6981 675 | FunctionC01B: 676 | jp $70a5 677 | INCBIN "base4.gb",$C01E,$10000-$C01E 678 | 679 | SECTION "bank4",ROMX,BANK[$4] 680 | Function10000: 681 | jp $4080 682 | Function10003: 683 | jp $4098 684 | Function10006: 685 | jp $55ef 686 | Function10009: 687 | jp $56db 688 | Function1000C: 689 | jp $408c 690 | Function1000F: 691 | jp $58d8 692 | Function10012: 693 | jp $58dc 694 | Function10015: 695 | jp $5b04 696 | 697 | INCBIN "base4.gb",$10018,$14000-$10018 698 | 699 | SECTION "bank5",ROMX,BANK[$5] 700 | Function14000: 701 | jp $4547 702 | INCBIN "base4.gb",$14003,$18000-$14003 703 | 704 | SECTION "bank6",ROMX,BANK[$6] 705 | INCBIN "base4.gb",$18000,$4000 706 | 707 | SECTION "bank7",ROMX,BANK[$7] 708 | INCBIN "base4.gb",$1C000,$4000 709 | 710 | SECTION "bank8",ROMX,BANK[$8] 711 | INCBIN "base4.gb",$20000,$4000 712 | 713 | SECTION "bank9",ROMX,BANK[$9] 714 | Function24000: 715 | jp $768d 716 | Function24003: 717 | jp $4597 718 | Function24006: 719 | jp $486d 720 | Function24009: 721 | jp $4beb 722 | Function2400C: 723 | jp $4ebb 724 | Function2400F: 725 | jp $52a0 726 | Function24012: 727 | jp $56d6 728 | Function24015: 729 | jp $5791 730 | Function24018: 731 | jp $5a7b 732 | Function2401B: 733 | jp $5be5 734 | Function2401E: 735 | jp $5ee1 736 | Function24021: 737 | jp $6d23 738 | Function24024: 739 | jp $6e5f 740 | Function24027: 741 | jp $6f29 742 | Function2402A: 743 | jp $7001 744 | Function2402D: 745 | jp $7275 746 | Function24030: 747 | jp $749d 748 | Function24033: 749 | jp $644f 750 | Function24036: 751 | jp $665e 752 | INCBIN "base4.gb",$24039,$28000-$24039 753 | 754 | SECTION "bankA",ROMX,BANK[$A] 755 | INCBIN "base4.gb",$28000,$4000 756 | 757 | SECTION "bankB",ROMX,BANK[$B] 758 | Function2C000: 759 | jp Function2C00C 760 | Function2C003: 761 | jp $4604 762 | Function2C006: 763 | jp $4b63 764 | Function2C009: 765 | jp $547e 766 | Function2C00C: 767 | call $4149 768 | ld a,$1C 769 | jp Function2A0 770 | 771 | INCBIN "base4.gb",$2C014,$30000-$2C014 772 | 773 | SECTION "bankC",ROMX,BANK[$C] 774 | INCBIN "base4.gb",$30000,$4000 775 | 776 | SECTION "bankD",ROMX,BANK[$D] 777 | Function34000: 778 | jp $4F14 779 | Function34003: 780 | jp $4FCF 781 | Function34006: 782 | jp $6007 783 | Function34009: 784 | jp $4C84 785 | Function3400C: 786 | jp $4A47 787 | Function3400F: 788 | jp $49B8 789 | Function34012: 790 | jp $7EE5 791 | Function34015: 792 | jp $4E69 793 | Function34018: 794 | jp $5066 795 | Function3401B: 796 | jp $52F3 797 | Function3401E: 798 | jp $5606 799 | Function34021: 800 | jp $5A66 801 | Function34024: 802 | jp $5793 803 | Function34027: 804 | jp $5B52 805 | Function3402A: 806 | jp $5CCF 807 | Function3402D: 808 | jp $5EB7 809 | Function34030: 810 | jp $61BD 811 | Function34033: 812 | jp $638F 813 | Function34036: 814 | jp $665D 815 | Function34039: 816 | jp $6989 817 | Function3403C: 818 | jp $6CE0 819 | Function3403F: 820 | jp $7032 821 | Function34042: 822 | jp $7329 823 | Function34045: 824 | jp $7627 825 | Function34048: 826 | jp $79A1 827 | Function3404B: 828 | jp $7BD7 829 | Function3404E: 830 | jp $7E5B 831 | INCBIN "base4.gb",$34051,$38000-$34051 832 | 833 | SECTION "bankE",ROMX,BANK[$E] 834 | Function38000: 835 | jp $4902 836 | Function38003: 837 | jp $4a56 838 | Function38006: 839 | jp $4db2 840 | Function38009: 841 | jp $4fec 842 | Function3800C: 843 | jp $51ad 844 | Function3800F: 845 | jp $53ef 846 | Function38012: 847 | jp $5515 848 | Function38015: 849 | jp $5672 850 | Function38018: 851 | jp $58b8 852 | Function3801B: 853 | jp $5a56 854 | Function3801E: 855 | jp $5cc3 856 | Function38021: 857 | jp $5e83 858 | Function38024: 859 | jp $62d6 860 | Function38027: 861 | jp $640d 862 | INCBIN "base4.gb",$3802A,$3C000-$3802A 863 | 864 | SECTION "bankF",ROMX,BANK[$F] 865 | Function3C000: 866 | jp $53eb 867 | Function3C003: 868 | jp $51c0 869 | Function3C006: 870 | jp $5182 871 | Function3C009: 872 | jp $5206 873 | Function3C00C: 874 | jp $402E 875 | Function3C00F: 876 | jp $5622 877 | INCBIN "base4.gb",$3C012,$40000-$3C012 878 | 879 | SECTION "bank10",ROMX,BANK[$10] 880 | Function40010: 881 | jp $4c62 882 | Function40013: 883 | jp $4c59 884 | Function40016: 885 | jp $4e02 886 | Function40019: 887 | jp $793c 888 | Function4001C: 889 | jp $4026 890 | Function4001F: 891 | jp $4025 892 | Function40022: 893 | jp $7cce 894 | Function40025: 895 | ret 896 | Function40026: 897 | ld hl,$4180 898 | ld a,b 899 | and $F 900 | cp $A 901 | jr c,.next 902 | sub $A 903 | ld hl,$4290 904 | .next 905 | swap a 906 | add a,l 907 | ld l,a 908 | ld a,0 909 | adc a,h 910 | ld h,a 911 | ld bc,$10 912 | jp Function183 913 | 914 | INCBIN "base4.gb",$40043,$40080-$40043 915 | 916 | TitleScreenTextTiles: ; $10:4080 917 | incbin "base4.gb",$40080, $400 918 | EndTitleScreenTextTiles: 919 | 920 | TitleScreenTilemap: ; $10:4480 921 | incbin "base4.gb",$40480,$80 922 | 923 | INCBIN "base4.gb",$40500,$405EA-$40500 924 | 925 | Function405EA: ; $10:45EA 926 | ld hl,TitleScreenLogoTiles 927 | ld bc,EndTitleScreenLogoTiles-TitleScreenLogoTiles 928 | ld de,$9000 929 | call Function183 930 | ld hl,TitleScreenTextTiles 931 | ld bc,EndTitleScreenTextTiles-TitleScreenTextTiles 932 | ld de,$8800 933 | call Function183 934 | ld hl,$9800 935 | ld bc,$9C00-$9800 936 | ld a,$62 ; blank tile 937 | call Function186 ; clear background map 938 | ld hl,TitleScreenArrowTile 939 | ld de,$8000 940 | ld bc,EndTitleScreenArrowTile-TitleScreenArrowTile 941 | jp Function183 942 | 943 | TitleScreenArrowTile: ; $10:4619 944 | db $00,$00,$40,$40,$60,$60,$70,$50,$78,$48,$70,$50,$60,$60,$40,$40 945 | EndTitleScreenArrowTile: 946 | 947 | TitleScreenLogoTiles: ; $10:4629 948 | incbin "base4.gb",$40629,$630 949 | EndTitleScreenLogoTiles: 950 | 951 | Function40C59: ; $10:4C59 952 | ld hl,$4290 953 | ld bc,$1A0 954 | jp $183 955 | 956 | Function40C62: ; $10:4C62 957 | ld b,0 958 | ld e,b 959 | ld d,b 960 | ld c,1 961 | call $4DC1 962 | call $4DD9 963 | call $1C5 964 | call $1D1 965 | call $45EA 966 | ld de,$9800 967 | ld hl,TitleScreenTilemap 968 | call $4DE1 969 | jp $4C8E 970 | 971 | INCBIN "base4.gb",$40C83,$44000-$40C83 972 | 973 | SECTION "bank11",ROMX,BANK[$11] 974 | INCBIN "base4.gb",$44010,$48000-$44010 975 | 976 | SECTION "bank12",ROMX,BANK[$12] 977 | INCBIN "base4.gb",$48010,$4C000-$48010 978 | 979 | SECTION "bank13",ROMX,BANK[$13] 980 | Function4C010: 981 | jp $7991 982 | INCBIN "base4.gb",$4C013,$50000-$4C013 983 | 984 | SECTION "bank14",ROMX,BANK[$14] 985 | Function50010: 986 | jp $41fa 987 | Function50013: 988 | jp $4208 989 | Function50016: 990 | jp $7aca 991 | Function50019: 992 | jp $5e06 993 | Function5001C: 994 | jp $6146 995 | Function5001F: 996 | jp $63d9 997 | Function50022: 998 | jp $659d 999 | Function50025: 1000 | jp $6b1d 1001 | INCBIN "base4.gb",$50028,$54000-$50028 1002 | 1003 | SECTION "bank15",ROMX,BANK[$15] 1004 | Function54010: 1005 | jp $4034 1006 | INCBIN "base4.gb",$54013,$58000-$54013 1007 | 1008 | SECTION "bank16",ROMX,BANK[$16] 1009 | INCBIN "base4.gb",$58010,$58ED2-$58010 1010 | 1011 | TextPointers: ; $16:4ED2 1012 | dw Text1 1013 | dw Text2 1014 | dw Text3 1015 | dw Text4 1016 | dw Text5 1017 | dw Text6 1018 | dw Text7 1019 | dw Text8 1020 | dw Text9 1021 | dw Text10 1022 | dw Text11 1023 | dw Text12 1024 | dw Text13 1025 | dw Text14 1026 | dw Text15 1027 | dw Text16 1028 | dw Text17 1029 | dw Text18 1030 | dw Text19 1031 | dw Text20 1032 | dw Text22 1033 | dw Text23 1034 | dw Text21 1035 | dw Text24 1036 | dw Text25 1037 | dw Text26 1038 | 1039 | db 0 1040 | 1041 | Text1: 1042 | db "MEGA MAN,",$FE,$FB,$3C 1043 | db "DR. WILY HAS",$F7,$FD 1044 | db "SENT HIS MOST",$FE 1045 | db "POWERFUL ROBOTS",$F7,$FD 1046 | db "ACROSS THE",$FE 1047 | db "WORLD. TO",$F7,$FD 1048 | db "COMBAT THEM, I",$FE 1049 | db "HAVE INVENTED",$F7,$FD 1050 | db "A NEW MACHINE",$FE 1051 | db "TO MAKE POWER",$F7,$FD 1052 | db "ITEMS FOR YOU.",$FE,$F7,$FD 1053 | db "BUT TO MAKE THE",$FE 1054 | db "ITEMS, WE NEED",$F7,$FD 1055 | db "TO USE SPECIAL",$FE 1056 | db "ENERGY ITEMS",$F7,$FD 1057 | db "CALLED P CHIPS.",$FE 1058 | db "COLLECT AS MANY",$F7,$FD 1059 | db "P CHIPS AS YOU",$FE 1060 | db "CAN AND BRING",$F7,$FD 1061 | db "THEM BACK TO",$FE 1062 | db "THE LAB.",$F7 1063 | db 0 1064 | 1065 | Text2: 1066 | db "THE MORE CHIPS",$FE 1067 | db "YOU COLLECT,",$F7,$FD 1068 | db "THE BETTER THE",$FE 1069 | db "ITEM I CAN MAKE",$F7,$FD 1070 | db "FOR YOU.",$FE,$F7 1071 | db 0 1072 | 1073 | Text3: 1074 | db "MEGA MAN!",$FE,$FB,$3C 1075 | db "DID YOU GET THE",$F7,$FD 1076 | db "P CHIPS?",$FE,$F7 1077 | db 0 1078 | 1079 | Text4: 1080 | db "SELECT THE ITEM",$FE 1081 | db "YOU WANT.",$F4 1082 | 1083 | Text5: 1084 | db "COLLECT ",$06," OF",$FE 1085 | db "THESE AND YOU",$F7,$FD 1086 | db "CAN GET AN",$FE 1087 | db "ENERGY TANK.",$F7 1088 | db 0 1089 | 1090 | Text6: 1091 | db "YOU CAN FULLY",$FE 1092 | db "RECHARGE ONE OF",$F7,$FD 1093 | db "YOUR WEAPONS",$FE 1094 | db "WITH THIS ITEM.",$F7 1095 | db 0 1096 | 1097 | Text7: 1098 | db "YOU CAN FULLY",$FE 1099 | db "RECOVER YOUR",$F7,$FD 1100 | db "VITALITY WITH",$FE 1101 | db "THIS ITEM.",$F7 1102 | db 0 1103 | 1104 | Text8: 1105 | db "YOU CAN FULLY",$FE 1106 | db "RECOVER YOUR",$F7,$FD 1107 | db "VITALITY AND",$FE 1108 | db "RECHARGE ALL",$F7,$FD 1109 | db "YOUR WEAPONS",$FE 1110 | db "WITH THIS ITEM.",$F7 1111 | db 0 1112 | 1113 | Text9: 1114 | db "EXTRA LIFE",$FE,$F7 1115 | db 0 1116 | 1117 | Text10: 1118 | db "WITH THIS LAST",$FE 1119 | db "ITEM, THE",$F7,$FD 1120 | db "WEAPON WITH",$FE 1121 | db "THE LOWEST",$F7,$FD 1122 | db "ENERGY LEVEL",$FE 1123 | db "WILL",$F7,$FD 1124 | db "AUTOMATICALLY",$FE 1125 | db "BE REFILLED",$F7,$FD 1126 | db "WHEN YOU PICK",$FE 1127 | db "UP A WEAPON",$F7,$FD 1128 | db "CAPSULE.",$FE,$F7 1129 | db 0 1130 | 1131 | Text11: 1132 | db "ALL OF YOUR",$FE 1133 | db "WEAPONS WILL",$F7,$FD 1134 | db "BE IMMEDIATELY",$FE 1135 | db "RECHARGED.",$F7 1136 | db 0 1137 | 1138 | Text12: 1139 | db "YOU CAN'T CARRY",$FE 1140 | db "ANY MORE OF",$F7,$FD 1141 | db "THIS ITEM.",$FE,$F7 1142 | db 0 1143 | 1144 | Text13: 1145 | db "ALL OF YOUR",$FE 1146 | db "WEAPONS ARE",$F7,$FD 1147 | db "ALREADY FULL.",$FE,$F7 1148 | db 0 1149 | 1150 | Text14: 1151 | db "YOU NEED ",$F5,$FE 1152 | db "P CHIPS FOR",$F7,$FD 1153 | db "THIS ITEM.",$FE,$F7 1154 | db 0 1155 | 1156 | Text15: 1157 | db "DO YOU WANT",$FE 1158 | db "THIS ITEM?",$F7,$FD 1159 | db "THIS ITEM?",$FE 1160 | db " B=NO A=YES",$F6 1161 | db 0 1162 | 1163 | Text16: 1164 | db "YOU DON'T HAVE",$FE 1165 | db "ENOUGH P CHIPS.",$F7 1166 | db 0 1167 | 1168 | Text17: 1169 | db "DO YOU WANT",$FE 1170 | db "ANOTHER ITEM?",$F4 1171 | 1172 | Text18: 1173 | db "ARE YOU",$FE 1174 | db "FINISHED?",$F7,$FD 1175 | db "FINISHED?",$FE 1176 | db " B=NO A=YES",$F6 1177 | db 0 1178 | 1179 | Text19: 1180 | db "GOOD LUCK",$FE 1181 | db "MEGA MAN!!",$F7 1182 | db 0 1183 | 1184 | Text20: 1185 | db "HMMM.....",$FE,$FB,$3C 1186 | db "I DIDN'T EXPECT",$F7,$FD 1187 | db "WILY TO BE THIS",$FE 1188 | db "POWERFUL. I",$F7,$FD 1189 | db "GUESS I HAVE NO",$FE 1190 | db "CHOICE BUT TO",$F7,$FD 1191 | db "TRY TO ENHANCE",$FE 1192 | db "YOUR MEGA",$F7,$FD 1193 | db "BUSTER.",$FE,$F7 1194 | db 0 1195 | 1196 | Text21: 1197 | db "BUT REALIZE THAT",$FE 1198 | db "THIS POWER-UP",$F7,$FD 1199 | db "WILL LOSE ITS",$FE 1200 | db "EFFECT IF YOU",$F7,$FD 1201 | db "TURN OFF THE",$FE 1202 | db "GAME BOY.",$F7 1203 | db 0 1204 | 1205 | Text22: 1206 | db "MEGA MAN,",$FB,$1E," TO",$FE 1207 | db "SNEAK INTO THE",$F7,$FD 1208 | db "CENTER OF",$FE 1209 | db "WILY'S TANK,",$F7,$FD 1210 | db "YOU NEED TO",$FE 1211 | db "COLLECT THE W,",$F7,$FD 1212 | db "I, L AND Y",$FE 1213 | db "PLATES HIDDEN",$F7,$FD 1214 | db "IN THE TANK.",$FE 1215 | db "GO AND GET THEM",$F7,$FD 1216 | db "ALL!!!",$FE,$F7 1217 | db 0 1218 | 1219 | Text23: 1220 | db "LISTEN UP",$FB,$1E," MEGA",$FE 1221 | db "MAN! WILY",$F7,$FD 1222 | db "ESCAPED TO HIS",$FE 1223 | db "SECRET SPACE",$F7,$FD 1224 | db "SHIP. WHILE I",$FE 1225 | db "MODIFY RUSH FOR",$F7,$FD 1226 | db "USE IN OUTER",$FE 1227 | db "SPACE, YOU",$F7,$FD 1228 | db "BETTER MAKE AS",$FE 1229 | db "MANY ITEMS AS",$F7,$FD 1230 | db "POSSIBLE.",$FE,$F7 1231 | db 0 1232 | 1233 | Text24: 1234 | db "BALLADE!!",$FE,$F7,$FB,$3C,$FD 1235 | db "WHY ARE YOU",$FE 1236 | db "HERE?",$F7 1237 | db 0 1238 | 1239 | Text25: 1240 | db "STOP BALLADE!!",$FE,$F7,$FD 1241 | db "YOU'RE BADLY",$FE 1242 | db "INJURED!",$F7,$FD 1243 | db "I KNOW MEGA MAN.",$FE,$F7,$FD 1244 | db "AFTER OUR",$FE 1245 | db "BATTLE, I",$F7,$FD 1246 | db "REALIZED THAT I",$FE 1247 | db "WAS WRONG.",$F7,$FD 1248 | db "THIS IS ALL I",$FE 1249 | db "CAN DO FOR YOU",$F7,$FD 1250 | db "NOW.",$FE,$F7,$FD,$FB,$3C 1251 | db "GOOD BYE...",$FE,$F7 1252 | db 0 1253 | 1254 | Text26: 1255 | db "BALLADE!!!!!",$FE,$F7 1256 | db 0 1257 | 1258 | INCBIN "base4.gb",$59680,$5C000-$59680 1259 | 1260 | SECTION "bank17",ROMX,BANK[$17] 1261 | Function5C000: 1262 | jp $43ce 1263 | Function5C003: 1264 | jp $42f5 1265 | Function5C006: 1266 | jp $4c80 1267 | Function5C009: 1268 | jp Function5C00C 1269 | Function5C00C: 1270 | ret 1271 | Pointers5C00D: 1272 | dw $40ed 1273 | dw $40f1 1274 | dw $40f5 1275 | dw $40f9 1276 | dw $40fd 1277 | dw $4103 1278 | dw $4107 1279 | dw $410d 1280 | dw $4113 1281 | dw $4119 1282 | dw $40ed 1283 | dw $418d 1284 | dw $4197 1285 | dw $411f 1286 | dw $4123 1287 | dw $4127 1288 | dw $412b 1289 | dw $412f 1290 | dw $4133 1291 | dw $4137 1292 | dw $413d 1293 | dw $4141 1294 | dw $4145 1295 | dw $4149 1296 | dw $414d 1297 | dw $4153 1298 | dw $4157 1299 | dw $415b 1300 | dw $415f 1301 | dw $4163 1302 | dw $4167 1303 | dw $416b 1304 | dw $416f 1305 | dw $4173 1306 | dw $4177 1307 | dw $417d 1308 | dw $4183 1309 | dw $4187 1310 | dw $41a1 1311 | dw $41a5 1312 | dw $41a9 1313 | dw $41af 1314 | dw $41b5 1315 | dw $41b9 1316 | dw $41bd 1317 | dw $41c1 1318 | dw $41c5 1319 | dw $41c9 1320 | dw $41cd 1321 | dw $41d3 1322 | dw $41db 1323 | dw $41df 1324 | dw $41e5 1325 | dw $41e9 1326 | dw $41ef 1327 | dw $41f3 1328 | dw $41f9 1329 | dw $41ff 1330 | dw $4205 1331 | dw $4209 1332 | dw $420d 1333 | dw $4211 1334 | dw $4215 1335 | dw $421f 1336 | dw $4219 1337 | dw $4239 1338 | dw $423d 1339 | dw $422f 1340 | dw $4235 1341 | dw $4245 1342 | dw $424b 1343 | dw 0 1344 | dw 0 1345 | dw 0 1346 | dw 0 1347 | dw 0 1348 | dw 0 1349 | dw 0 1350 | dw 0 1351 | dw 0 1352 | dw 0 1353 | dw 0 1354 | dw 0 1355 | dw 0 1356 | dw 0 1357 | dw 0 1358 | dw 0 1359 | dw 0 1360 | dw 0 1361 | dw 0 1362 | dw 0 1363 | dw 0 1364 | dw 0 1365 | dw $424f 1366 | dw $4259 1367 | dw $4277 1368 | dw $4281 1369 | dw $428b 1370 | dw $4295 1371 | dw $429f 1372 | dw $42a9 1373 | dw $42b3 1374 | dw $42bd 1375 | dw $4263 1376 | dw $426d 1377 | dw $42c7 1378 | dw $42d1 1379 | dw $42d5 1380 | dw $42dd 1381 | dw $42e3 1382 | dw $42e7 1383 | dw $42ed 1384 | 1385 | INCBIN "base4.gb",$5C0ED,$60000-$5C0ED 1386 | 1387 | SECTION "bank18",ROMX,BANK[$18] 1388 | Function60010: 1389 | jp $40a2 1390 | INCBIN "base4.gb",$60013,$64000-$60013 1391 | 1392 | SECTION "bank19",ROMX,BANK[$19] 1393 | Function64010: 1394 | jp $78ce 1395 | INCBIN "base4.gb",$64013,$68000-$64013 1396 | 1397 | SECTION "bank1A",ROMX,BANK[$1A] 1398 | INCBIN "base4.gb",$68010,$6c000-$68010 1399 | 1400 | SECTION "bank1B",ROMX,BANK[$1B] 1401 | INCBIN "base4.gb",$6C010,$70000-$6C010 1402 | 1403 | SECTION "bank1C",ROMX,BANK[$1C] 1404 | Function70010: 1405 | jp $4025 1406 | Function70013: 1407 | jp $5d3b 1408 | Function70016: 1409 | jp $5f9f 1410 | INCBIN "base4.gb",$70019,$74000-$70019 1411 | 1412 | SECTION "bank1D",ROMX,BANK[$1D] 1413 | Function74010: 1414 | jp $6e33 1415 | INCBIN "base4.gb",$74013,$78000-$74013 1416 | 1417 | SECTION "bank1E",ROMX,BANK[$1E] 1418 | Function78010: 1419 | jp $59fc 1420 | INCBIN "base4.gb",$78013,$7c000-$78013 1421 | 1422 | SECTION "bank1F",ROMX,BANK[$1F] 1423 | INCBIN "base4.gb",$7C010,$80000-$7C010 1424 | -------------------------------------------------------------------------------- /5.s: -------------------------------------------------------------------------------- 1 | include "text.charmap" 2 | 3 | bankswitch: MACRO 4 | rst $20 5 | ENDM 6 | 7 | freespace: MACRO 8 | incbin "base5.gb",\1,(\1 / $4000 + 1) * $4000 - \1 9 | ENDM 10 | 11 | bankword: MACRO 12 | dw \1 13 | db BANK(\1) 14 | ENDM 15 | 16 | ; $DF3D is the number of P chips 17 | 18 | SECTION "func0",ROM0[0] 19 | Func0: 20 | di 21 | ld sp,$FFFE 22 | jp $150 23 | 24 | SECTION "func8",ROM0[8] 25 | Func8: 26 | ld a,l 27 | ld [$CF78],a 28 | ld a,h 29 | jp $876 30 | 31 | SECTION "func10",ROM0[$10] 32 | Func10: 33 | ld [$CF7A],a 34 | ld a,l 35 | jp Function334 36 | 37 | SECTION "func18",ROM0[$18] 38 | Func18: 39 | ld a,[$DF03] 40 | cp $2B 41 | ret 42 | 43 | SECTION "func20",ROM0[$20] 44 | Bankswitch: ; $20 45 | ld [$DF00],a 46 | ld [$2100],a 47 | ret 48 | 49 | Function27: ; $27 50 | ld bc,$2AE1 51 | push hl 52 | jp $4A0 53 | 54 | SECTION "vblank",ROM0[$40] 55 | jp $50E 56 | 57 | SECTION "lcdc",ROM0[$48] 58 | jp $73D 59 | db $01,$1F,$FF 60 | 61 | SECTION "timer",ROM0[$50] 62 | reti 63 | 64 | SECTION "serial",ROM0[$58] 65 | reti 66 | 67 | SECTION "joypad",ROM0[$60] 68 | reti 69 | 70 | db $01,$02,$04,$08,$10,$20,$40,$80 71 | db 0,0,0,0,0,0 72 | db $11,$FF,$80,$00 73 | db $7E,$FF,$C9,$C9,$C9,$C9,$C9,$C9 74 | 75 | SECTION "unknownhome",ROM0[$D0] 76 | INCBIN "base5.gb",$D0,$30 77 | 78 | SECTION "header",ROM0[$100] 79 | nop 80 | jp Function150 81 | 82 | SECTION "start",ROM0[$150] 83 | 84 | Function150: 85 | jp Function4FA 86 | Function153: 87 | jp $20B2 88 | Function156: 89 | jp $3D65 90 | Function159: 91 | jp $3D71 92 | Function15C: 93 | jp $2C05 94 | Function15F: 95 | jp $2C0D 96 | Function162: 97 | jp $0406 98 | Function165: 99 | jp $0D96 100 | Function168: 101 | jp $1A96 102 | Function16B: 103 | jp $19D7 104 | Function16E: 105 | jp $1CFF 106 | Function171: 107 | jp $1D0A 108 | Function174: 109 | jp Function1A5E 110 | Copy8: ; $177 111 | jp Function19FC 112 | Copy4: ; $17A 113 | jp Function1A08 114 | Copy2: ; $17D 115 | jp Function1A0E 116 | Function180: 117 | jp Function1A22 118 | Function183: 119 | jp $1C39 120 | Function186: 121 | jp $1BAD 122 | Function189: 123 | jp $1C15 124 | Function18C: 125 | jp $11AB 126 | Function18F: 127 | jp $243D 128 | Function192: 129 | jp $2458 130 | Function195: 131 | jp $2405 132 | Function198: 133 | jp $2D2D 134 | Function19B: 135 | jp $2D2A 136 | Function19E: 137 | jp $317F 138 | Function1A1: 139 | jp $3192 140 | Function1A4: 141 | jp $30C1 142 | Function1A7: 143 | jp $30F7 144 | Function1AA: 145 | jp $2DE8 146 | Function1AD: 147 | jp $2B45 148 | Function1B0: 149 | jp $2B51 150 | Function1B3: 151 | jp $2B60 152 | Function1B6: 153 | jp $2A5F 154 | Function1B9: 155 | jp $3170 156 | Function1BC: 157 | jp $0EDA 158 | Function1BF: 159 | jp $3B4C 160 | Function1C2: 161 | jp $1E37 162 | Function1C5: 163 | jp $19AE 164 | Function1C8: 165 | jp $186B 166 | Function1CB: 167 | jp Function35E 168 | Function1CE: 169 | jp $1E48 170 | Function1D1: 171 | jp $3289 172 | Function1D4: 173 | jp $1E5F 174 | Function1D7: 175 | jp $2A45 176 | Function1DA: 177 | jp $2A57 178 | Function1DD: 179 | jp $2A7A 180 | Function1E0: 181 | jp $2A88 182 | Function1E3: 183 | jp $2A98 184 | Function1E6: 185 | jp $2B6E 186 | Function1E9: 187 | jp $2B72 188 | Function1EC: 189 | jp $1D18 190 | Function1EF: 191 | jp $2B78 192 | Function1F2: 193 | jp $2B89 194 | Function1F5: 195 | jp $048C 196 | Function1F8: 197 | jp $2B9C 198 | Function1FB: 199 | jp $2BA4 200 | Function1FE: 201 | jp $2B39 202 | Function201: 203 | jp $2B20 204 | Function204: 205 | jp $2B2A 206 | Function207: 207 | jp $202A 208 | Function20A: 209 | jp $202A 210 | Function20D: 211 | jp $1FE8 212 | Function210: 213 | jp $31F8 214 | Function213: 215 | jp $1D26 216 | Function216: 217 | jp $0FD5 218 | Function219: 219 | jp $2400 220 | Function21C: 221 | jp $2BF8 222 | Function21F: 223 | jp $10E0 224 | Function222: 225 | jp $0884 226 | Function225: 227 | jp $0851 228 | Function228: 229 | jp $0AFC 230 | Function22B: 231 | jp $1F51 232 | Function22E: 233 | jp $0429 234 | Function231: 235 | jp $0421 236 | Function234: 237 | jp $03F6 238 | Function237: 239 | jp $03FA 240 | Function23A: 241 | jp $1973 242 | Function23D: 243 | jp $04E9 244 | Function240: 245 | jp $10C6 246 | Function243: 247 | jp $3A30 248 | Function246: 249 | jp $3A0D 250 | Function249: 251 | jp $3ABC 252 | Function24C: 253 | jp $1D61 254 | Function24F: 255 | jp $2C74 256 | Function252: 257 | jp $2C97 258 | Function255: 259 | jp $1E0D 260 | Function258: 261 | jp $1E23 262 | Function25B: 263 | jp $04B4 264 | Function25E: 265 | jp $2D0E 266 | Function261: 267 | jp $1E3D 268 | Function264: 269 | jp $100F 270 | Function267: 271 | jp $1079 272 | Function26A: 273 | jp $108B 274 | Function26D: 275 | jp $2A0E 276 | Function270: 277 | jp $18F8 278 | Function273: 279 | jp $1096 280 | Function276: 281 | jp $129B 282 | Function279: 283 | jp $1326 284 | Function27C: 285 | jp $043A 286 | Function27F: 287 | jp $0F32 288 | Function282: 289 | jp $2DB4 290 | Function285: 291 | jp Function1A69 292 | Function288: 293 | jp $192B 294 | Function28B: 295 | jp $195D 296 | Function28E: 297 | jp $190f 298 | Function291: 299 | jp $0480 300 | Function294: 301 | jp $0EC4 302 | Function297: 303 | jp $0BC5 304 | Function29A: 305 | jp $0BCC 306 | Function29D: 307 | jp $244E 308 | Function2A0: 309 | jp Function504 310 | Function2A3: 311 | jp $03E3 312 | Function2A6: 313 | jp $03DA 314 | Function2A9: 315 | jp $03EE 316 | Function2AC: 317 | jp $23DD 318 | Function2AF: 319 | jp $05BC 320 | Function2B2: 321 | jp $05DF 322 | Function2B5: 323 | jp $04E6 324 | Function2B8: 325 | jp $191D 326 | Function2BB: 327 | jp $0927 328 | Function2BE: 329 | jp $31FB 330 | Function2C1: 331 | jp $04C5 332 | Function2C4: 333 | jp $042D 334 | Function2C7: 335 | jp $04C1 336 | Function2CA: 337 | jp $0466 338 | Function2CD: 339 | jp Function326 340 | Function2D0: 341 | jp $04BC 342 | Function2D3: 343 | jp $04DC 344 | Function2D6: 345 | jp $0490 346 | Function2D9: 347 | jp $03F2 348 | Function2DC: 349 | jp $03FE 350 | Function2DF: 351 | jp $03D4 352 | Function2E2: 353 | jp $047C 354 | Function2E5: 355 | jp $0462 356 | Function2E8: 357 | jp $0322 358 | Function2EB: 359 | jp $0AC4 360 | Function2EE: 361 | jp $0EDF 362 | Function2F1: 363 | jp $049C 364 | Function2F4: 365 | jp Func0 366 | Function2F7: 367 | jp Function306 368 | Function2FA: 369 | jp $030A 370 | Function2FD: 371 | jp $030E 372 | Function300: 373 | jp $0316 374 | Function303: 375 | jp $0312 376 | 377 | Function306: 378 | INCBIN "base5.gb",$306,$326-$306 379 | 380 | Function326: ; $326 381 | ld a,[$DF00] 382 | push af 383 | ld a,b 384 | bankswitch 385 | call Function332 386 | pop af 387 | bankswitch 388 | ret 389 | 390 | Function332: 391 | push de 392 | ret 393 | 394 | Function334: ; $334 395 | ld [$cf78],a 396 | ld a,h 397 | ld [$cf79],a 398 | pop hl 399 | ld a,$c3 400 | ld [$c0e0],a 401 | ldi a,[hl] 402 | ld [$c0e1],a 403 | ldi a,[hl] 404 | ld [$c0e2],a 405 | ld a,[$df00] 406 | push af 407 | ld a,[hl] 408 | bankswitch 409 | ld hl,$cf78 410 | ldi a,[hl] 411 | ld h,[hl] 412 | ld l,a 413 | ld a,[$cf7a] 414 | call $c0e0 415 | pop af 416 | bankswitch 417 | ret 418 | 419 | Function35E: ; $35E 420 | cp $24 421 | ret nC 422 | ld [$ff8a], a 423 | ld a, [$df00] 424 | push af 425 | push hl 426 | push de 427 | ld a, [$ff8a] 428 | ld e, a 429 | ld d, $00 430 | ld hl, Pointers38B 431 | add hl, de 432 | add hl, de 433 | add hl, de 434 | ldi a, [hl] 435 | ld [$c0d1], a 436 | ldi a, [hl] 437 | ld [$c0d2], a 438 | ld a, $c3 ; jp 439 | ld [$c0d0], a 440 | ld a, [hl] 441 | pop de 442 | pop hl 443 | bankswitch 444 | call $c0d0 445 | pop af 446 | bankswitch 447 | ret 448 | 449 | Pointers38B: 450 | dw Function3D3 451 | db 1 452 | bankword Function4F9D 453 | bankword Function4E2B 454 | bankword Function3400C 455 | bankword Function4E21 456 | bankword Function44F4 457 | bankword Function70C2 458 | bankword Function44AB 459 | bankword Function68010 460 | bankword Function4002B 461 | bankword Function34048 462 | bankword Function1000F 463 | bankword Function40028 464 | bankword Function10006 465 | dw Function2268 466 | db 1 467 | bankword Function5FDF 468 | bankword Function70010 469 | bankword Function64013 470 | dw Function3D3 471 | db 1 472 | bankword Function4F8E 473 | bankword FunctionC003 474 | bankword Function24003 475 | bankword Function78020 476 | bankword Function14006 477 | 478 | Function3D3: 479 | ret 480 | 481 | INCBIN "base5.gb",$3D4,$4FA-$3D4 482 | 483 | Function4FA: ; $4FA 484 | di 485 | ld sp,$FFFE 486 | ld a,1 487 | bankswitch 488 | jp $4000 489 | 490 | Function504: ; $504 491 | di 492 | ld sp,$FFFE 493 | ld a,1 494 | bankswitch 495 | jp $4030 496 | 497 | INCBIN "base5.gb",$50E,$BE9-$50E 498 | 499 | InitializeLives: ; $BE9 500 | ld a,3 501 | ld [$DF34],a 502 | call $B5D 503 | xor a 504 | ld [$DE9B],a 505 | ld [$DED4],a 506 | jp $454D 507 | 508 | INCBIN "base5.gb",$BFB,$19FC-$BFB 509 | 510 | Function19FC: ; $19FC 511 | ld a,[de] 512 | inc de 513 | ld [hli],a 514 | ld a,[de] 515 | inc de 516 | ld [hli],a 517 | ld a,[de] 518 | inc de 519 | ld [hli],a 520 | ld a,[de] 521 | inc de 522 | ld [hli],a 523 | Function1A08: ; $1A08 524 | ld a,[de] 525 | inc de 526 | ld [hli],a 527 | ld a,[de] 528 | inc de 529 | ld [hli],a 530 | Function1A0E: ; $1A0E 531 | ld a,[de] 532 | inc de 533 | ld [hli],a 534 | ld a,[de] 535 | inc de 536 | ld [hli],a 537 | ret 538 | 539 | Function1A15: ; $1A15 540 | ld a,[hli] 541 | ld [de],a 542 | inc de 543 | ld a,[hli] 544 | ld [de],a 545 | inc de 546 | ld a,[hli] 547 | ld [de],a 548 | inc de 549 | ld a,[hli] 550 | ld [de],a 551 | inc de 552 | ret 553 | 554 | Function1A22: ; $1A22 555 | push af 556 | .loop 557 | ld a,[hli] 558 | ld [de],a 559 | inc de 560 | dec bc 561 | ld a,b 562 | or c 563 | jr nz,.loop 564 | pop af 565 | ret 566 | 567 | Function1A2D: ; $1A2D 568 | ld a,[hli] 569 | ld [de],a 570 | inc de 571 | ld a,[hli] 572 | ld [de],a 573 | inc de 574 | ld a,[hli] 575 | ld [de],a 576 | inc de 577 | ld a,[hli] 578 | ld [de],a 579 | inc de 580 | ld a,[hli] 581 | ld [de],a 582 | inc de 583 | ld a,[hli] 584 | ld [de],a 585 | inc de 586 | ld a,[hli] 587 | ld [de],a 588 | inc de 589 | ld a,[hli] 590 | ld [de],a 591 | inc de 592 | ld a,[hli] 593 | ld [de],a 594 | inc de 595 | ld a,[hli] 596 | ld [de],a 597 | inc de 598 | ld a,[hli] 599 | ld [de],a 600 | inc de 601 | ld a,[hli] 602 | ld [de],a 603 | inc de 604 | ld a,[hli] 605 | ld [de],a 606 | inc de 607 | ld a,[hli] 608 | ld [de],a 609 | inc de 610 | ld a,[hli] 611 | ld [de],a 612 | inc de 613 | ld a,[hli] 614 | ld [de],a 615 | inc de 616 | ret 617 | 618 | Function1A5E: ; $1A5E 619 | ld [hl],a 620 | ld e,l 621 | ld d,h 622 | inc de 623 | dec bc 624 | ld a,b 625 | or c 626 | ret z 627 | jp Function1A22 628 | 629 | Function1A69: ; $1A69 630 | ld hl,0 631 | ld a,$10 632 | .loop 633 | add hl,hl 634 | rl c 635 | rl b 636 | jr nc,.next 637 | add hl,de 638 | jr nc,.next 639 | inc bc 640 | .next 641 | dec a 642 | jr nz,.loop 643 | ret 644 | 645 | INCBIN "base5.gb",$1A7D,$2268-$1A7D 646 | 647 | Function2268: 648 | INCBIN "base5.gb",$2268,$3ec9-$2268 649 | 650 | Function3EC9: 651 | INCBIN "base5.gb",$3ec9,$3ee1-$3ec9 652 | 653 | freespace $3ee1 654 | 655 | SECTION "bank1",ROMX,BANK[$1] 656 | INCBIN "base5.gb",$4000,$44AB-$4000 657 | 658 | Function44AB: 659 | INCBIN "base5.gb",$44ab,$44f4-$44ab 660 | Function44F4: 661 | INCBIN "base5.gb",$44f4,$4AE1-$44f4 662 | 663 | Function4AE1: 664 | ld hl,$DF34 665 | inc [hl] 666 | ld a,[hl] 667 | cp 11 668 | jr c,.nextlife 669 | ld [hl],10 ; maximum of 9 extra lives 670 | ret 671 | .nextlife 672 | rst 8 673 | ld [de],a 674 | ret 675 | 676 | .bighealth 677 | ld d,10 678 | jr .healaddress 679 | .littlehealth 680 | ld d,2 681 | .healaddress 682 | ld hl,$DE9E 683 | jr .heal 684 | 685 | .bigweap 686 | ld d,10 687 | jr .weapaddress 688 | .littleweap 689 | ld d,2 690 | .weapaddress 691 | ld a,[$DE9B] ; current weapon 692 | or a 693 | jr z,.nomoreheal ; can't heal the buster 694 | add $9E ; $DE9E & $FF??? 695 | ld l,a 696 | ld h,$DE ; $DE9E >> 8??? 697 | ld a,[hl] 698 | cp $98 699 | jr nc,.nomoreheal 700 | .heal 701 | ld a,d 702 | ld [$D4BB],a 703 | ld a,l 704 | ld [$D4B9],a 705 | ld a,h 706 | ld [$D4BA],a 707 | ld hl,$DEAF 708 | set 1,[hl] 709 | xor a 710 | ld [$D4B8],a 711 | jr .next 712 | ld hl,$D4B8 713 | inc [hl] 714 | ld a,[hl] 715 | cp 4 716 | ret c 717 | xor a 718 | ld [hl],a 719 | .next 720 | ld hl,$D4BB 721 | ld a,[hl] 722 | or a 723 | jr z,.next2 724 | dec [hl] 725 | ld hl,$D4B9 726 | ld a,[hli] 727 | ld h,[hl] 728 | ld l,a 729 | ld a,[hl] 730 | cp $98 731 | jr nc,.next2 732 | rst 8 733 | rla 734 | ld a,8 735 | add [hl] 736 | ld [hl],a 737 | cp $98 738 | ret c 739 | ld [hl],$98 740 | ret 741 | .next2 742 | ld hl,$DEAF 743 | res 1,[hl] 744 | ret 745 | .nomoreheal 746 | ld a,[$DF3C] 747 | or a 748 | ret z 749 | push bc 750 | push de 751 | ld a,0 752 | ld [$FF8A],a 753 | ld a,0 754 | ld [$FF8B],a 755 | ld c,$99 756 | ld b,$C 757 | ld hl,$DE9F 758 | ld a,[$DE9C] 759 | ld e,a 760 | ld a,[$DE9D] 761 | ld d,a 762 | .next5 763 | srl d 764 | rr e 765 | .next3 766 | srl d 767 | rr e 768 | jr nc,.next4 769 | ld a,[hl] 770 | cp c 771 | jr nc,.next4 772 | ld c,a 773 | ld a,l 774 | ld [$FF8A],a 775 | ld a,h 776 | ld [$FF8B],a 777 | .next4 778 | inc hl 779 | dec b 780 | jr nz,.next3 781 | .next7 782 | pop de 783 | pop bc 784 | ld hl,$FF8A 785 | ld a,[hli] 786 | ld h,[hl] 787 | ld l,a 788 | ld a,h 789 | or l 790 | ret z 791 | jp $4B11 792 | ld hl,$D40A 793 | ld a,[hl] 794 | or a 795 | ret z 796 | ld [hl],0 797 | ld b,a 798 | ld l,0 799 | .next6 800 | ld a,[hli] 801 | ld c,l 802 | push bc 803 | add $a 804 | ld l,a 805 | ld a,[hl] 806 | ld [hl],$40 807 | call $30F7 808 | ld h,$D4 809 | pop bc 810 | ld l,c 811 | dec b 812 | jr nz,.next6 813 | 814 | ret 815 | 816 | INCBIN "base5.gb",$4BBB,$4e21-$4BBB 817 | Function4E21: 818 | ld a, $FF 819 | ld hl, $4e40 820 | ld b, 0 821 | jp Function4FEF 822 | 823 | Function4E2B: 824 | INCBIN "base5.gb",$4e2b,$4f8e-$4e2b 825 | Function4F8E: 826 | INCBIN "base5.gb",$4f8e,$4f9d-$4f8e 827 | Function4F9D: 828 | INCBIN "base5.gb",$4f9d,$4fef-$4f9d 829 | Function4FEF: 830 | INCBIN "base5.gb",$4fef,$5fdf-$4fef 831 | Function5FDF: 832 | INCBIN "base5.gb",$5fdf,$70c2-$5fdf 833 | Function70C2: 834 | INCBIN "base5.gb",$70c2,$7d08-$70c2 835 | 836 | freespace $7D08 837 | 838 | SECTION "bank2",ROMX,BANK[$2] 839 | INCBIN "base5.gb",$8000,$4000 840 | 841 | SECTION "bank3",ROMX,BANK[$3] 842 | FunctionC000: 843 | jp FunctionF9FC 844 | 845 | FunctionC003: 846 | jp FunctionFAA3 847 | 848 | FunctionC006: 849 | jp FunctionC778 850 | 851 | FunctionC009: 852 | jp FunctionE8AC 853 | 854 | FunctionC00C: 855 | jp FunctionD1A1 856 | 857 | FunctionC00F: 858 | jp FunctionDB36 859 | 860 | FunctionC012: 861 | jp FunctionF12E 862 | 863 | FunctionC015: 864 | jp FunctionF9C9 865 | 866 | FunctionC018: 867 | jp FunctionF9C9 868 | 869 | FunctionC01B: 870 | INCBIN "base5.gb",$C01B,$C778-$C01B 871 | FunctionC778: 872 | INCBIN "base5.gb",$C778,$D1A1-$C778 873 | FunctionD1A1: 874 | INCBIN "base5.gb",$D1A1,$DB36-$D1A1 875 | FunctionDB36: 876 | INCBIN "base5.gb",$DB36,$E8AC-$DB36 877 | FunctionE8AC: 878 | INCBIN "base5.gb",$E8AC,$F12E-$E8AC 879 | FunctionF12E: 880 | INCBIN "base5.gb",$F12E,$F9C9-$F12E 881 | FunctionF9C9: 882 | INCBIN "base5.gb",$F9C9,$F9FC-$F9C9 883 | FunctionF9FC: 884 | INCBIN "base5.gb",$f9fc,$fa99-$f9fc 885 | DataFA99: 886 | dw $4EA3 887 | dw $59B3 888 | dw $62CE 889 | dw $6F7A 890 | dw $7743 891 | 892 | FunctionFAA3: 893 | ld a, b 894 | dec a 895 | ld de, DataFA99 896 | jp Function171 897 | 898 | freespace $FAAB 899 | 900 | SECTION "bank4",ROMX,BANK[$4] 901 | Function10000: 902 | jp $405D 903 | 904 | Function10003: 905 | jp $53d7 906 | 907 | Function10006: 908 | jp $6b9e 909 | 910 | Function10009: 911 | jp $50ef 912 | 913 | Function1000C: 914 | jp $51db 915 | 916 | Function1000F: 917 | jp $4069 918 | 919 | Function10012: 920 | jp $63d6 921 | 922 | Function10015: 923 | jp $63d0 924 | 925 | Function10018: 926 | jp $7437 927 | 928 | Function1001B: 929 | jp $743b 930 | 931 | Function1001E: 932 | jp $743f 933 | 934 | Function10021: 935 | jp $7443 936 | 937 | Function10024: 938 | jp $5090 939 | 940 | INCBIN "base5.gb",$10027,$14000-$10027 941 | 942 | SECTION "bank5",ROMX,BANK[$5] 943 | INCBIN "base5.gb",$14000,$6 944 | Function14006: 945 | INCBIN "base5.gb",$14006,$18000-$14006 946 | 947 | SECTION "bank6",ROMX,BANK[$6] 948 | INCBIN "base5.gb",$18000,$4000 949 | 950 | SECTION "bank7",ROMX,BANK[$7] 951 | INCBIN "base5.gb",$1C000,$4000 952 | 953 | SECTION "bank8",ROMX,BANK[$8] 954 | INCBIN "base5.gb",$20000,$4000 955 | 956 | SECTION "bank9",ROMX,BANK[$9] 957 | Function24000: 958 | jp $7c9a 959 | 960 | Function24003: 961 | jp $7ee4 962 | 963 | Function24006: 964 | jp $42c3 965 | 966 | Function24009: 967 | jp $464e 968 | 969 | Function2400c: 970 | jp $4ca0 971 | 972 | Function2400f: 973 | jp $5574 974 | 975 | Function24012: 976 | jp $5d28 977 | 978 | Function24015: 979 | jp $6650 980 | 981 | Function24018: 982 | jp $7802 983 | 984 | Function2401B: 985 | INCBIN "base5.gb",$2401b,$28000-$2401b 986 | 987 | SECTION "bankA",ROMX,BANK[$A] 988 | INCBIN "base5.gb",$28000,$4000 989 | 990 | SECTION "bankB",ROMX,BANK[$B] 991 | Function2C000: 992 | jp $4b3c 993 | 994 | Function2C003: 995 | jp $4DCA 996 | 997 | Function2C006: 998 | jp $5EB2 999 | 1000 | Function2C009: 1001 | INCBIN "base5.gb",$2C009,$30000-$2C009 1002 | 1003 | SECTION "bankC",ROMX,BANK[$C] 1004 | Function30000: 1005 | jp $417b 1006 | 1007 | INCBIN "base5.gb",$30003,$34000-$30003 1008 | 1009 | SECTION "bankD",ROMX,BANK[$D] 1010 | Function34000: 1011 | jp $7879 1012 | 1013 | Function34003: 1014 | jp $5470 1015 | 1016 | Function34006: 1017 | jp $573B 1018 | 1019 | Function34009: 1020 | jp $515A 1021 | 1022 | Function3400C: 1023 | jp $5215 1024 | 1025 | Function3400F: 1026 | jp $52B3 1027 | 1028 | Function34012: 1029 | jp $4fe2 1030 | 1031 | Function34015: 1032 | jp $4c59 1033 | 1034 | Function34018: 1035 | jp $4bdf 1036 | 1037 | Function3401B: 1038 | jp $7f45 1039 | 1040 | Function3401E: 1041 | jp $581b 1042 | 1043 | Function34021: 1044 | jp $58ba 1045 | 1046 | Function34024: 1047 | jp $5c7e 1048 | 1049 | Function34027: 1050 | jp $60ff 1051 | 1052 | Function3402A: 1053 | jp $66d0 1054 | 1055 | Function3402D: 1056 | jp $690d 1057 | 1058 | Function34030: 1059 | jp $6b50 1060 | 1061 | Function34033: 1062 | jp $6e37 1063 | 1064 | Function34036: 1065 | jp $6ec7 1066 | 1067 | Function34039: 1068 | jp $6f44 1069 | 1070 | Function3403C: 1071 | jp $72a2 1072 | 1073 | Function3403F: 1074 | jp $75c1 1075 | 1076 | Function34042: 1077 | jp $79de 1078 | 1079 | Function34045: 1080 | jp $7b56 1081 | 1082 | Function34048: 1083 | jp $7db4 1084 | 1085 | Function3404B: 1086 | jp $4e8e 1087 | 1088 | INCBIN "base5.gb",$3404e,$38000-$3404e 1089 | 1090 | SECTION "bankE",ROMX,BANK[$E] 1091 | Function38000: 1092 | jp $4e19 1093 | 1094 | Function38003: 1095 | jp $4ed0 1096 | 1097 | Function38006: 1098 | jp $51ae 1099 | 1100 | Function38009: 1101 | jp $52bf 1102 | 1103 | Function3800c: 1104 | jp $5c67 1105 | 1106 | Function3800f: 1107 | jp $6332 1108 | 1109 | Function38012: 1110 | jp $6dcf 1111 | 1112 | Function38015: 1113 | jp $7cd9 1114 | 1115 | INCBIN "base5.gb",$38018,$3c000-$38018 1116 | 1117 | SECTION "bankF",ROMX,BANK[$F] 1118 | 1119 | Function3C000: 1120 | jp $4c86 1121 | 1122 | Function3C003: 1123 | jp $4aa1 1124 | 1125 | INCBIN "base5.gb",$3c006,4 1126 | 1127 | Function3C00A: 1128 | jp $5074 1129 | 1130 | Function3C00D: 1131 | jp $6053 1132 | 1133 | Function3C010: 1134 | jp $6050 1135 | 1136 | Function3C013: 1137 | jp $4fb7 1138 | 1139 | INCBIN "base5.gb",$3C016,$40000-$3C016 1140 | 1141 | SECTION "bank10",ROMX,BANK[$10] 1142 | 1143 | Function40010: 1144 | jp $4231 1145 | 1146 | Function40013: 1147 | jp $423f 1148 | 1149 | Function40016: 1150 | jp $4192 1151 | 1152 | Function40019: 1153 | jp $4964 1154 | 1155 | Function4001C: 1156 | jp $5d8c 1157 | 1158 | Function4001F: 1159 | jp $6cb5 1160 | 1161 | Function40022: 1162 | jp $6bd7 1163 | 1164 | Function40025: 1165 | jp $6e5e 1166 | 1167 | Function40028: 1168 | jp Function4003B 1169 | 1170 | Function4002B: 1171 | jp Function4003A 1172 | 1173 | Function4002E: 1174 | jp $7357 1175 | 1176 | Function40031: 1177 | jp $77a5 1178 | 1179 | Function40034: 1180 | jp $796d 1181 | 1182 | Function40037: 1183 | jp $544d 1184 | 1185 | Function4003A: 1186 | ret 1187 | 1188 | Function4003B: 1189 | ld hl,$60FE 1190 | ld a,b 1191 | and $F 1192 | cp $a 1193 | jr c,.next 1194 | sub $a 1195 | ld hl, $620e 1196 | .next 1197 | swap a 1198 | add a,l 1199 | ld l,a 1200 | ld a,0 1201 | adc a,h 1202 | ld h,a 1203 | ld bc,$10 1204 | jp Function183 1205 | 1206 | INCBIN "base5.gb",$40058,$41FFE-$40058 1207 | 1208 | TitleScreenTextTiles: ; $10:5FFE 1209 | incbin "base5.gb",$41FFE,$400 1210 | EndTitleScreenTextTiles: 1211 | 1212 | TitleScreenTilemap: ; $10:63FE 1213 | 1214 | INCBIN "base5.gb",$423FE,$42568-$423FE 1215 | 1216 | Function42568: ; $10:6568 1217 | ld hl,TitleScreenLogoTiles 1218 | ld bc,EndTitleScreenLogoTiles-TitleScreenLogoTiles 1219 | ld de,$9000 1220 | call Function183 1221 | ld hl,TitleScreenTextTiles 1222 | ld bc,EndTitleScreenTextTiles-TitleScreenTextTiles 1223 | ld de,$8800 1224 | call Function183 1225 | ld hl,$9800 1226 | ld bc,$9C00-$9800 1227 | ld a,$62 ; blank tile 1228 | call Function186 ; clear background map 1229 | ld hl,TitleScreenArrowTile 1230 | ld de,$8000 1231 | ld bc,EndTitleScreenArrowTile-TitleScreenArrowTile 1232 | jp Function183 1233 | 1234 | TitleScreenArrowTile: ; $10:6597 1235 | db $00,$00,$40,$40,$60,$60,$70,$50,$78,$48,$70,$50,$60,$60,$40,$40 1236 | EndTitleScreenArrowTile: 1237 | 1238 | TitleScreenLogoTiles: ; $10:65A7 1239 | incbin "base5.gb",$425A7,$630 1240 | EndTitleScreenLogoTiles: 1241 | 1242 | Function42BD7: ; $10:6BD7 1243 | ld hl,$620E 1244 | ld bc,$1A0 1245 | jp Function183 1246 | 1247 | Function42BE0: ; $10:6BE0 1248 | ld b,0 1249 | ld e,b 1250 | ld d,b 1251 | ld c,1 1252 | call $6E04 1253 | call $6E1C 1254 | call Function1C5 1255 | call Function1D1 1256 | call $6568 1257 | ld de,$9800 1258 | ld hl,TitleScreenTilemap 1259 | call $6E3D 1260 | jp $6C0E 1261 | 1262 | INCBIN "base5.gb",$42C01,$44000-$42C01 1263 | 1264 | SECTION "bank11",ROMX,BANK[$11] 1265 | INCBIN "base5.gb",$44000,$4000 1266 | 1267 | SECTION "bank12",ROMX,BANK[$12] 1268 | 1269 | Function48010: 1270 | jp $4b58 1271 | 1272 | Function48013: 1273 | jp $518a 1274 | 1275 | Function48016: 1276 | jp $56f3 1277 | 1278 | Function48019: 1279 | jp $597b 1280 | 1281 | Function4801C: 1282 | jp $5bea 1283 | 1284 | Function5801F: 1285 | jp $5f66 1286 | 1287 | Function58022: 1288 | jp $64b9 1289 | 1290 | Function58025: 1291 | jp $6761 1292 | 1293 | Function58028: 1294 | jp $6912 1295 | 1296 | Function5802B: 1297 | jp $6d25 1298 | 1299 | Function5802E: 1300 | jp $7011 1301 | 1302 | INCBIN "base5.gb",$48031,$4c000-$48031 1303 | 1304 | SECTION "bank13",ROMX,BANK[$13] 1305 | INCBIN "base5.gb",$4C010,$50000-$4C010 1306 | 1307 | SECTION "bank14",ROMX,BANK[$14] 1308 | 1309 | Function50010: 1310 | jp $61f1 1311 | 1312 | Function50013: 1313 | jp $6512 1314 | 1315 | Function50016: 1316 | ld [$CF7B],a 1317 | ld a,$D4 1318 | ld [$CF86],a 1319 | ld a,$3C 1320 | ld [$DE88],a 1321 | ld a,2 1322 | ld [$CF7C],a 1323 | xor a 1324 | ld [$CF7D],a 1325 | ld [$CF7E],a 1326 | ld de,Function50063 1327 | ld hl,$CF7F 1328 | ld [hl],e 1329 | inc hl 1330 | ld [hl],d 1331 | inc hl 1332 | ld [hl],BANK(Function50063) 1333 | call Function2D3 1334 | xor a 1335 | ld [$DE88],a 1336 | ret 1337 | 1338 | Function50043: 1339 | ld a,$80 1340 | jp Function50016 1341 | 1342 | Function50048: 1343 | ld a,1 1344 | ld [$CCA6],a 1345 | ld b,0 1346 | ld e,b 1347 | ld d,b 1348 | ld c,4 1349 | call $41e0 1350 | call $41fa 1351 | ld a,$c9 ; ret? 1352 | ld [$c0f0],a 1353 | xor a 1354 | ld [$DE2C],a 1355 | ret 1356 | 1357 | Function50063: 1358 | INCBIN "base5.gb",$50063,$54000-$50063 1359 | 1360 | SECTION "bank15",ROMX,BANK[$15] 1361 | 1362 | Function54010: 1363 | jp $4cd8 1364 | 1365 | Function54013: 1366 | jp $53be 1367 | 1368 | Function54016: 1369 | jp $58ac 1370 | 1371 | Function54019: 1372 | jp $5d58 1373 | 1374 | Function5401C: 1375 | INCBIN "base5.gb",$5401C,$58000-$5401C 1376 | 1377 | SECTION "bank16",ROMX,BANK[$16] 1378 | 1379 | INCBIN "base5.gb",$58010,$584B7-$58010 1380 | 1381 | TextPointers: ; $16:44B7 1382 | dw Text1 1383 | dw Text2 1384 | dw Text3 1385 | dw Text4 1386 | dw Text5 1387 | dw Text6 1388 | dw Text7 1389 | dw Text8 1390 | dw Text9 1391 | dw Text10 1392 | dw Text11 1393 | dw Text12 1394 | dw Text13 1395 | dw Text14 1396 | dw Text15 1397 | dw Text16 1398 | dw Text17 1399 | dw Text18 1400 | dw Text19 1401 | dw Text20 1402 | dw Text21 1403 | dw Text22 1404 | dw Text23 1405 | dw Text24 1406 | dw Text25 1407 | dw Text26 1408 | dw Text27 1409 | dw Text28 1410 | dw Text29 1411 | dw Text30 1412 | dw Text31 1413 | dw Text32 1414 | dw Text33 1415 | dw Text34 1416 | dw Text35 1417 | dw Text36 1418 | dw Text37 1419 | dw Text38 1420 | dw Text39 1421 | dw Text40 1422 | dw Text42 1423 | dw Text43 1424 | dw Text44 1425 | dw Text45 1426 | dw Text47 1427 | dw Text48 1428 | dw Text49 1429 | dw Text50 1430 | dw Text51 1431 | dw Text53 1432 | dw Text54 1433 | dw Text41 1434 | dw Text46 1435 | dw Text55 1436 | dw Text56 1437 | dw Text57 1438 | dw Text58 1439 | dw Text59 1440 | dw Text60 1441 | dw Text52 1442 | 1443 | Text1: 1444 | db "MEGAMAN,",$FB,$3C," OUR",$FE 1445 | db "WORLD IS ONCE",$F7,$FD 1446 | db "AGAIN IN CHAOS.",$FE,$FB,$3C 1447 | db "THE ALIEN ROBOTS",$F7,$FD 1448 | db "CALL THEMSELVES",$FE 1449 | db "\"STARDROIDS\" AND",$F7,$FD 1450 | db "HAVE CONQUERED",$FE 1451 | db "MOST OUR MAJOR",$F7,$FD 1452 | db "CITIES.",$FE 1453 | db $FB,$3C,"THEY ARE",$F7,$FD 1454 | db "CONSTRUCTED OF",$FE 1455 | db "ALIEN MATERIAL",$F7,$FD 1456 | db "WHICH RENDER OUR",$FE 1457 | db "WEAPONS USELESS.",$F7 1458 | db 0 1459 | 1460 | Text2: 1461 | db "BUT, I HAVE DONE",$FE 1462 | db "SOME ANALYSIS",$F7,$FD 1463 | db "AND CONSTRUCTED",$FE 1464 | db "A NEW WEAPON FOR",$F7,$FD 1465 | db "YOU. ",$FB,$3C,"IT WILL",$FE 1466 | db "REPLACE YOUR",$F7,$FD 1467 | db "SUPER MEGA",$FE 1468 | db "BUSTER.",$F7 1469 | db 0 1470 | 1471 | Text3: 1472 | db "OH, MEGAMAN!",$FE 1473 | db $FB,$3C,"DID YOU BRING",$F7,$FD 1474 | db "BACK THE",$FE 1475 | db "P CHIPS?",$F7 1476 | db 0 1477 | 1478 | Text4: 1479 | db "SELECT THE ITEM",$FE 1480 | db "YOU WANT.",$F4 1481 | 1482 | Text5: 1483 | db "COLLECT 4 OF",$FE 1484 | db "THESE AND YOU",$F7,$FD 1485 | db "WILL EARN A",$FE 1486 | db "E TANK.",$F7 1487 | db 0 1488 | 1489 | Text6: 1490 | db "YOU CAN TOTALLY",$FE 1491 | db "RECHARGE ONE OF",$F7,$FD 1492 | db "YOUR WEAPONS",$FE 1493 | db "WITH THIS ITEM.",$F7 1494 | db 0 1495 | 1496 | Text7: 1497 | db "YOU CAN TOTALLY",$FE 1498 | db "RECHARGE YOUR",$F7,$FD 1499 | db "ENERGY LEVEL",$FE 1500 | db "WITH THIS ITEM.",$F7 1501 | db 0 1502 | 1503 | Text8: 1504 | db "YOU CAN TOTALLY",$FE 1505 | db "RECHARGE YOUR",$F7,$FD 1506 | db "ENERGY LEVEL AND",$FE 1507 | db "ALL OF YOUR",$F7,$FD 1508 | db "WEAPONS WITH",$FE 1509 | db "THIS ITEM.",$F7 1510 | db 0 1511 | 1512 | Text9: 1513 | db "EXTRA LIFE.",$F7 1514 | db 0 1515 | 1516 | Text10: 1517 | db "WITH THIS ITEM,",$FE 1518 | db "THE WEAPON WITH",$F7,$FD 1519 | db "THE LEAST AMOUNT",$FE 1520 | db "OF ENERGY WILL",$F7,$FD 1521 | db "BE REFILLED",$FE 1522 | db "AUTOMATICALLY",$F7,$FD 1523 | db "WHEN YOU PICK UP",$FE 1524 | db "AN WEAPON",$F7,$FD 1525 | db "CAPSULE.",$F7 1526 | db 0 1527 | 1528 | Text11: 1529 | db "ALL OF YOUR",$FE 1530 | db "WEAPONS WILL BE",$F7,$FD 1531 | db "IMMEDIATELY",$FE 1532 | db "REFILLED.",$F7 1533 | db 0 1534 | 1535 | Text12: 1536 | db "YOU CAN'T CARRY",$FE 1537 | db "ANY MORE OF THAT",$F7,$FD 1538 | db "ITEM.",$F7 1539 | db 0 1540 | 1541 | Text13: 1542 | db "ALL OF YOUR",$FE 1543 | db "WEAPONS ARE",$F7,$FD 1544 | db "ALREADY FULL.",$F7 1545 | db 0 1546 | 1547 | Text14: 1548 | db "YOU NEED ",$F5,$FE 1549 | db "P CHIPS FOR THIS",$F7,$FD 1550 | db "ITEM.",$F7 1551 | db 0 1552 | 1553 | Text15: 1554 | db "DO YOU WANT",$FE 1555 | db "THIS ITEM?",$F7,$FD 1556 | db "THIS ITEM?",$FE 1557 | db " B=NO A=YES",$F6 1558 | db 0 1559 | 1560 | Text16: 1561 | db "YOU DON'T HAVE",$FE 1562 | db "ENOUGH P CHIPS.",$F7 1563 | db 0 1564 | 1565 | Text17: 1566 | db "SELECT THE ITEM",$FE 1567 | db "YOU WANT.",$F4 1568 | 1569 | Text18: 1570 | db "ARE YOU",$FE 1571 | db "FINISHED?",$F7,$FD 1572 | db "FINISHED?",$FE 1573 | db " B=NO A=YES",$F6 1574 | db 0 1575 | 1576 | Text19: 1577 | db "GOOD LUCK,",$FE 1578 | db "MEGAMAN!",$F7 1579 | db 0 1580 | 1581 | Text20: 1582 | db "IT IS CALLED THE",$FE 1583 | db "\"MEGA ARM\" AND",$F7,$FD 1584 | db "IT ALLOWS YOU TO",$FE 1585 | db "CHARGE ENERGY IN",$F7,$FD 1586 | db "YOUR FIST BEFORE",$FE 1587 | db "YOU FIRE IT.",$F7 1588 | db 0 1589 | 1590 | Text21: 1591 | db "I HAVE ALSO",$FE 1592 | db "CREATED A NEW",$F7,$FD 1593 | db "ASSISTANT FOR",$FE 1594 | db "YOU. ",$FB,$3C,"HIS NAME",$F7,$FD 1595 | db "IS \"TANGO\".",$F7 1596 | db 0 1597 | 1598 | Text22: 1599 | db "I'LL ENHANCE",$FE 1600 | db "THIS ITEM",$F7,$FD 1601 | db "REPLICATOR TO",$FE 1602 | db "MAKE POWERFUL",$F7,$FD 1603 | db "ITEMS FOR YOU.",$FE 1604 | db $FB,$3C,"COLLECT AS MANY",$F7,$FD 1605 | db "P CHIPS AS",$FE 1606 | db "POSSIBLE AND",$F7,$FD 1607 | db "RETURN TO MY LAB",$FE 1608 | db "TO EXCHANGE THEM",$F7,$FD 1609 | db "FOR POWER-UP",$FE 1610 | db "ITEMS.",$F7,$FD 1611 | db "GOOD LUCK,",$FE 1612 | db "MEGAMAN.",$F7 1613 | db 0 1614 | 1615 | Text23: 1616 | db $F9,$78,"IN THE YEAR 20XX",$FE 1617 | db "AD, THE WORLD IS",$FD 1618 | db "AT PEACE THANKS",$FE 1619 | db "TO MEGAMAN.",$FB,$F0,$F4 1620 | db 0 1621 | 1622 | Text24: 1623 | db $F9,$5A,$FD,"DR. WILY'S",$FE 1624 | db "FOURTH ATTEMPT",$FD 1625 | db "AT WORLD",$FE 1626 | db "DOMINATION HAS",$FD 1627 | db "FAILED AND HIS",$FE 1628 | db "NAME HAS ONCE",$FD 1629 | db "AGAIN FADED FROM",$FE 1630 | db "THE MINDS OF THE",$FD 1631 | db "CITIZENS OF THE",$FE 1632 | db "WORLD.",$FB,$3C,$FD 1633 | db "A FEW MONTHS",$FE 1634 | db "LATER...",$FB,$F,$F4 1635 | db 0 1636 | 1637 | Text25: 1638 | db $F9,$78,"SO, YOU ARE THE",$FE 1639 | db "FAMOUS MEGAMAN!",$FB,$78,$FD 1640 | db "I AM TERRA - AND",$FE 1641 | db "YOU WILL SOON BE",$FD 1642 | db "MY SLAVE!",$FB,$78,$F4 1643 | db 0 1644 | 1645 | Text26: 1646 | db $F9,$78,"WHAT?! ",$FB,$3C,"MY MEGA",$FE 1647 | db "BUSTER HAS NO",$FD 1648 | db "EFFECT ON HIM...",$FB,$78,$F4 1649 | db 0 1650 | 1651 | Text27: 1652 | db $F9,$78,"A FEW HOURS",$FE 1653 | db "LATER, THE WORLD",$FD 1654 | db "WAS ATTACKED BY",$FE 1655 | db "WARRIOR ROBOTS",$FD 1656 | db "FROM SPACE.",$FB,$B4,$F4 1657 | db 0 1658 | 1659 | Text28: 1660 | db $F9,$78,"WHERE AM I?",$FB,$78,$F4 1661 | db 0 1662 | 1663 | Text29: 1664 | db $F9,$78,"DR. LIGHT FOUND",$FE 1665 | db "MEGAMAN AND",$FD 1666 | db "EQUIPPED HIM",$FE 1667 | db "WITH THE NEW",$FD 1668 | db "\"MEGA ARM\".",$FE 1669 | db "THE MOST",$FD 1670 | db "POWERFUL WEAPON",$FE 1671 | db "EVER DEVISED.",$FB,$78,$F4 1672 | db 0 1673 | 1674 | Text30: 1675 | db $F9,$78,"WHY HAVE THE",$FE 1676 | db "STARDROIDS COME",$FD 1677 | db "HERE!?",$FB,$78,$F4 1678 | db 0 1679 | 1680 | Text31: 1681 | db "THIS IS A",$FE 1682 | db "POWER-UP ITEM",$F7,$FD 1683 | db "FOR THE",$FE 1684 | db "\"MEGA ARM\".",$F7,$FD 1685 | db "ONCE INSTALLED,",$FE 1686 | db "YOU CAN GRAB AN",$F7,$FD 1687 | db "ITEM FROM FAR",$FE 1688 | db "AWAY.",$F7 1689 | db 0 1690 | 1691 | Text32: 1692 | db "THIS IS A",$FE 1693 | db "POWER-UP ITEM",$F7,$FD 1694 | db "FOR THE",$FE 1695 | db "\"MEGA ARM\".",$F7,$FD 1696 | db "ONCE INSTALLED,",$FE 1697 | db "YOU CAN GRAB AND",$F7,$FD 1698 | db "ATTACK THE ENEMY",$FE 1699 | db "OVER AND OVER.",$F7 1700 | db 0 1701 | 1702 | Text33: 1703 | db "THIS POWER",$FE 1704 | db "GENERATOR WAS",$F7,$FD 1705 | db "MADE FROM THE 4",$FE 1706 | db "CRYSTALS YOU",$F7,$FD 1707 | db "BROUGHT BACK.",$FE 1708 | db $FB,$3C,"THE POWER",$F7,$FD 1709 | db "GENERATOR WILL",$FE 1710 | db "REDUCE THE",$F7,$FD 1711 | db "AMOUNT OF ENERGY",$FE 1712 | db "YOUR SPECIAL",$F7,$FD 1713 | db "WEAPONS USE BY",$FE 1714 | db "HALF.",$F7,$FD 1715 | db "NO P CHIPS ARE",$FE 1716 | db "REQUIRED FOR",$F7,$FD 1717 | db "THIS ITEM, ONLY",$FE 1718 | db "THE CRYSTALS.",$F7 1719 | db 0 1720 | 1721 | Text34: 1722 | db "YOU CAN'T MAKE",$FE 1723 | db "ANY MORE OF THIS",$F7,$FD 1724 | db "ITEM.",$F7 1725 | db 0 1726 | 1727 | Text35: 1728 | db "DR. LIGHT!!",$FE 1729 | db $FB,$3C,"I FOUND THIS",$F7,$FD 1730 | db "CRYSTAL ON THE",$FE 1731 | db "PLANET!",$F7,$FD 1732 | db "YOU BETTER",$FE 1733 | db "ANALYZE IT.",$F7,$FD 1734 | db "LET ME SEE...",$FB,$78,$F7,$FD 1735 | db "WELL, THIS",$FE 1736 | db "CRYSTAL SEEMS TO",$F7,$FD 1737 | db "BE THE ENERGY",$FE 1738 | db "SOURCE USED BY",$F7,$FD 1739 | db "THAT PLANET'S",$FE 1740 | db "ANCIENT",$F7,$FD 1741 | db "CIVILIZATION.",$FE 1742 | db $FB,$3C,"WITH 4 OF THESE,",$F7,$FD 1743 | db "I CAN MAKE AN",$FE 1744 | db "ITEM THAT WILL",$F7,$FD 1745 | db "REDUCE THE",$FE 1746 | db "ENERGY",$F7,$FD 1747 | db "CONSUMPTION OF",$FE 1748 | db "YOUR SPECIAL",$F7,$FD 1749 | db "WEAPONS BY HALF.",$FE 1750 | db $FB,$3C,"I ASSUME THERE",$F7,$FD 1751 | db "ARE SIMILAR",$FE 1752 | db "CRYSTALS LIKE",$F7,$FD 1753 | db "THIS ON OTHER",$FE 1754 | db "PLANETS TOO.",$F7,$FD 1755 | db "COLLECT ALL FOUR",$FE 1756 | db "CRYSTALS AND",$F7,$FD 1757 | db "BRING THEM BACK",$FE 1758 | db "TO THE LAB.",$F7,$FD 1759 | db "GOOD LUCK!",$F7 1760 | db 0 1761 | 1762 | Text36: 1763 | db $F9,$78,"THAT'S STRANGE..",$FE 1764 | db $FB,$3C,"THERE'S NOTHING",$FD 1765 | db "HERE.",$FB,$78,$F4 1766 | db 0 1767 | 1768 | Text37: 1769 | db "IT'S BEEN A LONG",$FE 1770 | db "TIME, ",$FB,$3C,"MEGAMAN!",$F7,$FD 1771 | db "I DIDN'T EXPECT",$FE 1772 | db "TO SEE YOU IN",$F7,$FD 1773 | db "ONE PIECE AGAIN.",$FE 1774 | db $FB,$3C,"BUT THAT IS OF",$F7,$FD 1775 | db "LITTLE",$FE 1776 | db "CONSEQUENCE NOW.",$F7,$FD 1777 | db "I WILL DESTROY",$FE 1778 | db "YOU AS I DID",$F7,$FD 1779 | db "BEFORE AND",$FE 1780 | db "AVENGE MY FALLEN",$F7,$FD 1781 | db "COMRADES.",$F7,$FD 1782 | db "DARK MOON,",$FE 1783 | db $FB,$3C,"ATTACK!",$F7 1784 | db 0 1785 | 1786 | Text38: 1787 | db "WELCOME BACK,",$FE 1788 | db $FB,$1E,"MEGAMAN! ",$FB,$3C," I'VE",$F7,$FD 1789 | db "JUST DISCOVERED",$FE 1790 | db "SOME SHOCKING",$F7,$FD 1791 | db "NEWS.",$F7,$FD 1792 | db "THE STARDROIDS",$FE 1793 | db "HAVE BEEN USING",$F7,$FD 1794 | db "THE RESOURCES",$FE 1795 | db "FROM EARTH TO",$F7,$FD 1796 | db "CREATE AN EVEN",$FE 1797 | db "MORE POWERFUL",$F7,$FD 1798 | db "GENERATION OF",$FE 1799 | db "ROBOTS. ",$FB,$3C,"IF THEY",$F7,$FD 1800 | db "LAUNCH AN",$FE 1801 | db "ALL-OUT ATTACK",$F7,$FD 1802 | db "NOW, WE'LL BE",$FE 1803 | db "EASILY DEFEATED.",$F7,$FD 1804 | db "I'M NOT SURE",$FE 1805 | db "WHAT TO DO.",$F7 1806 | db 0 1807 | 1808 | Text39: 1809 | db "DR. LIGHT, ",$FB,$3C,"WE",$FE 1810 | db "NEED TO STRIKE",$F7,$FD 1811 | db "NOW! ",$FB,$3C,"IF YOU CAN",$FE 1812 | db "TRANSFORM RUSH",$F7,$FD 1813 | db "FOR SPACE",$FE 1814 | db "TRAVEL, WE CAN",$F7,$FD 1815 | db "TRY A SURPRISE",$FE 1816 | db "ATTACK AND WIPE",$F7,$FD 1817 | db "THEM OUT.",$F7 1818 | db 0 1819 | 1820 | Text40: 1821 | db $31,$31,$31,$31,$31,$FE 1822 | db 0 1823 | 1824 | Text41: 1825 | db "OK. ",$FB,$3C,"I'LL START",$FE 1826 | db "MODIFYING RUSH",$F7,$FD 1827 | db "AND GIVE HIM",$FE 1828 | db "SOME EXTRA",$F7,$FD 1829 | db "FIREPOWER. ",$FB,$3C,"THIS",$FE 1830 | db "MAY TAKE SOME",$F7,$FD 1831 | db "TIME, SO WHY",$FE 1832 | db "DON'T YOU GO",$F7,$FD 1833 | db "EXCHANGE YOUR",$FE 1834 | db "P CHIPS FOR",$F7,$FD 1835 | db "ITEMS.",$F7 1836 | db 0 1837 | 1838 | Text42: 1839 | db $F9,$78,"I SHOULD HAVE",$FE 1840 | db "DEFEATED ALL THE",$FD 1841 | db "STARDROIDS.",$F4 1842 | db 0 1843 | 1844 | Text43: 1845 | db "WHAT? ",$FB,$3C,"WHAT'S",$FE 1846 | db "THAT STAR?...",$F4 1847 | db 0 1848 | 1849 | Text44: 1850 | db $F9,$78,"WAIT...",$FE 1851 | db $FB,$78,"IT'S MOVING...",$FD 1852 | db "NO!",$FE 1853 | db $FB,$78,"IT CAN'T BE!",$F4 1854 | db 0 1855 | 1856 | Text45: 1857 | db "WILY?!",$FB,$78,$F4 1858 | db 0 1859 | 1860 | Text46: 1861 | db "IS HE BEHIND",$FE 1862 | db "THIS?!",$F4 1863 | db 0 1864 | 1865 | Text47: 1866 | db "OOPS! ",$FB,$78,"THAT WAS",$FE 1867 | db "CLOSE!",$F4 1868 | db 0 1869 | 1870 | Text48: 1871 | db $F9,$78,"HIT THE JETS,",$FE 1872 | db "RUSH! ",$FB,$3C,"LET'S GO!",$F4 1873 | db 0 1874 | 1875 | Text49: 1876 | db "ARE YOU OK?",$FE 1877 | db $FB,$78,"HERE, GRAB MY",$F7,$FD 1878 | db "SHOULDER. ",$FB,$3C,"I'M",$FE 1879 | db "SURE YOU CAN BE",$F7,$FD 1880 | db "FIXED AT",$FE 1881 | db "DR. LIGHT'S LAB.",$F7,$FD 1882 | db "MEGAMAN... ",$FB,$32,"WHY?",$FB,$5A,$F7,$FD 1883 | db "WHY ARE YOU",$FE 1884 | db "HELPING ME?",$F7,$FD 1885 | db "BECAUSE WE ARE",$FE 1886 | db "BOTH ROBOTS.",$F7,$FD 1887 | db "YES. ",$FB,$3C,"AND WE",$FE 1888 | db "WERE BOTH",$F7,$FD 1889 | db "CREATED TO",$FE 1890 | db "FIGHT!",$F7 1891 | db 0 1892 | 1893 | Text50: 1894 | db "NO, ",$FB,$3C,"YOU'RE",$FE 1895 | db "WRONG! ",$FB,$3C,"I ONLY",$F7,$FD 1896 | db "FIGHT WHEN I AM",$FE 1897 | db "FORCED TO",$F7,$FD 1898 | db "PROTECT THE",$FE 1899 | db "WORLD FROM THOSE",$F7,$FD 1900 | db "WHO WOULD PIT",$FE 1901 | db "MACHINES AGAINST",$F7,$FD 1902 | db "MAN. ",$FB,$3C,"I BELIEVE",$FE 1903 | db "HUMANS AND",$F7,$FD 1904 | db "ROBOTS CAN LIVE",$FE 1905 | db "IN PEACE!",$F7,$FD 1906 | db "MAYBE... ",$FB,$3C,"BUT I",$FE 1907 | db "WILL NEVER KNOW.",$F7,$FD 1908 | db "MY FUSION",$FE 1909 | db "REACTOR IS GOING",$F7,$FD 1910 | db "CRITICAL AND",$FE 1911 | db "WHEN IT DOES, IT",$F7,$FD 1912 | db "WILL DESTROY",$FE 1913 | db "THIS ENTIRE",$F7,$FD 1914 | db "FORTRESS.",$F7,$FD 1915 | db "SUNSTAR...",$FB,$3C,$F7,$FD 1916 | db "LEAVE NOW!",$FB,$3C,$F7 1917 | db 0 1918 | 1919 | Text51: 1920 | db $F9,$78,"WILY!",$FE 1921 | db $FB,$78,"YOU SURVIVED?!",$FB,$78,$F4 1922 | db 0 1923 | 1924 | Text52: 1925 | db $F9,$78,"CURSE YOU,",$FE 1926 | db $FB,$78,"MEGAMAN!",$FD 1927 | db "THIS WAR",$FE 1928 | db "ENDS NOW!",$FB,$78,$F4 1929 | db 0 1930 | 1931 | Text53: 1932 | db "MEGAMAN,",$FE 1933 | db $FB,$3C,"WELCOME HOME!",$F7,$FD 1934 | db "I HAVE JUST",$FE 1935 | db "COMPLETED",$F7,$FD 1936 | db "THE TURBO",$FE 1937 | db "ACCELERATOR FOR",$F7,$FD 1938 | db "YOUR \"MEGA ARM\".",$F7 1939 | db 0 1940 | 1941 | Text54: 1942 | db "OK.",$F7,$FD 1943 | db "IT'S FUNCTIONING",$FE 1944 | db "PERFECTLY.",$F7,$FD 1945 | db "GOOD LUCK,",$FE 1946 | db "MEGAMAN!",$F7 1947 | db 0 1948 | 1949 | Text55: 1950 | db "I FINALLY",$FE 1951 | db "DESTROYED ALL",$F7,$FD 1952 | db "THE SPACE",$FE 1953 | db "STATIONS!",$F7 1954 | db 0 1955 | 1956 | Text56: 1957 | db "YOU FOOL",$FE 1958 | db "MEGAMAN!",$F7,$FD 1959 | db "YOU HAVE METTLED",$FE 1960 | db "WITH MY PLAN FOR",$F7,$FD 1961 | db "THE LAST TIME.",$F7,$FD 1962 | db "WE COULD HAVE",$FE 1963 | db "CREATED A NEW",$F7,$FD 1964 | db "WORLD FOR ALL",$FE 1965 | db "ROBOTS! ",$FB,$3C,"HOW CAN",$F7,$FD 1966 | db "I FACE MY MASTER",$FE 1967 | db "NOW? ",$FB,$3C,"I MUST",$F7,$FD 1968 | db "REDEEM MYSELF BY",$FE 1969 | db "BLOWING YOU TO",$F7,$FD 1970 | db "PIECES!",$F7 1971 | db 0 1972 | 1973 | Text57: 1974 | db $F9,$78,"BEHOLD MEGAMAN,",$FE 1975 | db $FB,$3C,"I HAVE AWAKENED",$FD 1976 | db "THE ANCIENT",$FE 1977 | db "WEAPON SUNSTAR!",$FD 1978 | db "ITS NOVA WEAPON",$FE 1979 | db "WILL DESTROY",$FD 1980 | db "YOU!",$FB,$78,$F4 1981 | db 0 1982 | 1983 | Text58: 1984 | db "SUNSTAR, ",$FB,$3C,"DESTROY",$FE 1985 | db "MEGAMAN!",$FB,$78,$F4 1986 | db 0 1987 | 1988 | Text59: 1989 | db $F9,$78,"WHAT?!?",$FE 1990 | db $FB,$5A,"YOU FOOL!",$FD 1991 | db "HOW DARE YOU",$FE 1992 | db "ATTACK THE",$FD 1993 | db "MIGHTY DR. WILY!",$FB,$78,$F4 1994 | db 0 1995 | 1996 | Text60: 1997 | db $F9,$78,"YOU ARE...",$FE 1998 | db $FB,$5A,"MEGAMAN...",$FD 1999 | db "I AM SUNSTAR...",$FD 2000 | db "THE DOOMSDAY",$FE 2001 | db "WEAPON...",$FD 2002 | db "I MUST DESTROY",$FE 2003 | db "ALL INFERIOR",$FD 2004 | db "LIFE FORMS!",$FB,$78,$F4 2005 | db 0 2006 | 2007 | INCBIN "base5.gb",$59A73,$5C000-$59A73 2008 | 2009 | SECTION "bank17",ROMX,BANK[$17] 2010 | Function5C000: 2011 | jp $4416 2012 | 2013 | Function5C003: 2014 | jp $433d 2015 | 2016 | Function5C006: 2017 | jp $4ccb 2018 | 2019 | Function5C009: 2020 | jp Function5C00C 2021 | 2022 | Function5C00C: 2023 | ret 2024 | 2025 | Pointers5C00D: 2026 | dw $410b 2027 | dw $410f 2028 | dw $4113 2029 | dw $4117 2030 | dw $411b 2031 | dw $4121 2032 | dw $4125 2033 | dw $412b 2034 | dw $4131 2035 | dw $4137 2036 | dw $410b 2037 | dw $41ab 2038 | dw $41b5 2039 | dw $413d 2040 | dw $4141 2041 | dw $4145 2042 | dw $4149 2043 | dw $414d 2044 | dw $4151 2045 | dw $4155 2046 | dw $415b 2047 | dw $415f 2048 | dw $4163 2049 | dw $4167 2050 | dw $416b 2051 | dw $4171 2052 | dw $4175 2053 | dw $4179 2054 | dw $417d 2055 | dw $4181 2056 | dw $4185 2057 | dw $4189 2058 | dw $418d 2059 | dw $4191 2060 | dw $4195 2061 | dw $419b 2062 | dw $41a1 2063 | dw $41a5 2064 | dw $41bf 2065 | dw $41c7 2066 | dw $41cb 2067 | dw $41cf 2068 | dw $41d5 2069 | dw $41d9 2070 | dw $41df 2071 | dw $41e5 2072 | dw $41ef 2073 | dw $41f3 2074 | dw $41f7 2075 | dw $41fb 2076 | dw $41ff 2077 | dw $4209 2078 | dw $4203 2079 | dw $421d 2080 | dw $4221 2081 | dw $4219 2082 | dw $4229 2083 | dw $422d 2084 | dw $41c3 2085 | dw $4245 2086 | dw $4231 2087 | dw $4235 2088 | dw $4239 2089 | dw $423d 2090 | dw $4241 2091 | dw $4265 2092 | dw $426b 2093 | dw $4273 2094 | dw $427b 2095 | dw $4281 2096 | dw $4285 2097 | dw $4277 2098 | dw $4125 2099 | dw $4125 2100 | dw $4125 2101 | dw $4125 2102 | dw $4249 2103 | dw $424d 2104 | dw $4251 2105 | dw $4255 2106 | dw $4259 2107 | dw $425d 2108 | dw $4261 2109 | dw $4125 2110 | dw $4125 2111 | dw $4125 2112 | dw $4125 2113 | dw $4125 2114 | dw $4125 2115 | dw 0 2116 | dw $4125 2117 | dw 0 2118 | dw 0 2119 | dw 0 2120 | dw 0 2121 | dw 0 2122 | dw 0 2123 | dw 0 2124 | dw 0 2125 | dw 0 2126 | dw 0 2127 | dw 0 2128 | dw 0 2129 | dw 0 2130 | dw $4125 2131 | dw $4125 2132 | dw $4125 2133 | dw $4125 2134 | dw 0 2135 | dw $4289 2136 | dw $4293 2137 | dw $429d 2138 | dw $42a7 2139 | dw $42b1 2140 | dw $42bb 2141 | dw $42c5 2142 | dw $431f 2143 | dw $4329 2144 | dw $42cf 2145 | dw $42d9 2146 | dw $42e3 2147 | dw $42ed 2148 | dw $42f7 2149 | dw $4301 2150 | dw $430b 2151 | dw $4315 2152 | dw $4333 2153 | 2154 | INCBIN "base5.gb",$5C10B,$60000-$5C10B 2155 | 2156 | SECTION "bank18",ROMX,BANK[$18] 2157 | 2158 | INCBIN "base5.gb",$60010,$64000-$60010 2159 | 2160 | SECTION "bank19",ROMX,BANK[$19] 2161 | 2162 | Function64010: 2163 | jp $41aa 2164 | 2165 | Function64013: 2166 | jp $45c0 2167 | 2168 | Function64016: 2169 | inc hl 2170 | xor a 2171 | ld [hli],a 2172 | ld [hl],a 2173 | ret 2174 | 2175 | INCBIN "base5.gb",$6401b,$68000-$6401b 2176 | 2177 | SECTION "bank1A",ROMX,BANK[$1A] 2178 | 2179 | Function68010: 2180 | jp $40b4 2181 | 2182 | INCBIN "base5.gb",$68013,$6c000-$68013 2183 | 2184 | SECTION "bank1B",ROMX,BANK[$1B] 2185 | 2186 | Function6C010: 2187 | jp $437b 2188 | 2189 | INCBIN "base5.gb",$6C013,$70000-$6C013 2190 | 2191 | SECTION "bank1C",ROMX,BANK[$1C] 2192 | 2193 | Function70010: 2194 | jp $420e 2195 | 2196 | Function70013: 2197 | jp $4a6c 2198 | 2199 | Function70016: 2200 | jp $4c7d 2201 | 2202 | INCBIN "base5.gb",$70019,$74000-$70019 2203 | 2204 | SECTION "bank1D",ROMX,BANK[$1D] 2205 | 2206 | Function74010: 2207 | jp $4b15 2208 | 2209 | Function74013: 2210 | jp $4e51 2211 | 2212 | Function74016: 2213 | jp $5236 2214 | 2215 | Function74019: 2216 | jp $5353 2217 | 2218 | Function7401C: 2219 | jp $561e 2220 | 2221 | Function7401F: 2222 | jp $5B28 2223 | 2224 | Function74022: 2225 | jp $5e63 2226 | 2227 | Function74025: 2228 | jp $62b2 2229 | 2230 | Function74028: 2231 | jp $6820 2232 | 2233 | Function7402B: 2234 | jp $6b77 2235 | 2236 | Function7402E: 2237 | jp $6e7c 2238 | 2239 | Function74031: 2240 | jp $7286 2241 | 2242 | Function74034: 2243 | jp $7729 2244 | 2245 | Function74037: 2246 | jp $78ea 2247 | 2248 | Function7403A: 2249 | jp $7ae8 2250 | 2251 | Function7403D: 2252 | jp $7d3e 2253 | 2254 | INCBIN "base5.gb",$74040,$78000-$74040 2255 | 2256 | SECTION "bank1E",ROMX,BANK[$1E] 2257 | 2258 | Pointers78010: 2259 | dw $4321 2260 | dw $45e4 2261 | dw $4aba 2262 | dw $4e3d 2263 | dw $4967 2264 | 2265 | Function7801A: 2266 | jp $5625 2267 | 2268 | Function7801D: 2269 | jp $729f 2270 | 2271 | Function78020: 2272 | jp $4023 2273 | 2274 | INCBIN "base5.gb",$78023,$7c000-$78023 2275 | 2276 | SECTION "bank1F",ROMX,BANK[$1F] 2277 | 2278 | INCBIN "base5.gb",$7C010,$80000-$7C010 2279 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .SUFFIXES: .s .o .gb 2 | 3 | ALL = 1.gb 3.gb 4.gb 5.gb bc.gb 4 | 5 | all: $(ALL) 6 | 7 | 1.gb: 1.o 8 | rgblink -o $@ 1.o 9 | rgbfix -v -t MEGAMAN -m 1 -p 0 -j -l 8 $@ 10 | 11 | 3.gb: 3.o 12 | rgblink -o $@ 3.o 13 | rgbfix -v -t MEGAMAN3 -m 1 -p 0 -j -l 8 $@ 14 | 15 | 4.gb: 4.o programbank/4.o 16 | rgblink -o $@ programbank/4.o 4.o 17 | rgbfix -v -t MEGAMAN4 -m 1 -p 0 -j -l 8 $@ 18 | 19 | 5.gb: 5.o programbank/5.o 20 | rgblink -o $@ programbank/5.o 5.o 21 | rgbfix -v -t MEGAMAN5 -m 1 -p 0 -j -l 0x33 -s -k 08 $@ 22 | 23 | bc.gb: bc.o 24 | rgblink -o $@ bc.o 25 | rgbfix -v -t BIONIC-COMMANDO -m 1 -p 0 -j -l 8 $@ 26 | 27 | .s.o: 28 | rgbasm -o $@ $< 29 | 30 | 4.o: text.charmap 31 | 32 | 5.o: text.charmap 33 | 34 | clean: 35 | rm -f */*.o *.o $(ALL) 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is a work‐in‐progress disassembly of the following Game Boy games: 2 | 3 | * Mega Man: Dr. Wily’s Revenge 4 | * Mega Man III 5 | * Mega Man IV 6 | * Mega Man V 7 | * Bionic Commando 8 | 9 | To build, first install [RGBDS](https://github.com/rednex/rgbds/). 10 | 11 | Next, copy the original games (SHA256 hashes below) into the directory 12 | under the following names: 13 | 14 | * base1.gb 33d16365318411f063edd9100c79458aabb7ea71bb1873e30f38b93814f0ec6e 15 | * base3.gb 7344a36fcfc8151098238529218762e44c5a1546fab7e7fd5d32927e06cbf5a8 16 | * base4.gb 4d980ca46a83cd127312dbc445ed1a83e97ed7a8026dce6fdd22a01b1895781b 17 | * base5.gb 7a108770a7c1ad592b52d0c46d7ead422d0a20961abaafca3d40086e3f2f588f 18 | * basebc.gb 692e62d9e0048350256ee124d55c6ef225dc2bb54e0808fd882312d4dcaf0f28 19 | 20 | Then run “make” from a POSIX shell. 21 | 22 | ## Why include Bionic Commando? Why not Mega Man II? 23 | 24 | Rockman World 1, 3, 4, and 5 were all developed by Minakuchi Engineering 25 | for Capcom. Rockman World 2 is noticeably absent from that list: 26 | 27 | > We hired a different company to do ‘World 2’, and that was a total nightmare. 28 | > They just didn’t understand Mega Man like the company that did ‘World 1.’ 29 | 30 | — Keiji Inafune, MM25 p. 102 31 | 32 | 1, 3, 4, and 5 have similar codebases. Bionic Commando was also developed by 33 | Minakuchi Engineering and is likewise similar internally. 34 | 35 | In contrast, Rockman World 2 uses an entirely different codebase altogether. 36 | -------------------------------------------------------------------------------- /bc.s: -------------------------------------------------------------------------------- 1 | bankswitch: MACRO 2 | ld [$C0D3],a 3 | ld [$2100],a 4 | ENDM 5 | 6 | bankswitch1: MACRO 7 | ld a,[$C0D3] 8 | push af 9 | rst $20 10 | ENDM 11 | 12 | freespace: MACRO 13 | incbin "basebc.gb",\1,(\1 / $4000 + 1) * $4000 - \1 14 | ENDM 15 | 16 | SECTION "func0",ROM0[0] 17 | Func0: 18 | ld sp,$FFFE 19 | di 20 | jp $0150 21 | db 1 22 | 23 | SECTION "func8",ROM0[8] 24 | Func8: 25 | ld a,l 26 | ld [$C0DD],a 27 | ld a,h 28 | jp $3E81 29 | 30 | SECTION "func10",ROM0[$10] 31 | ret 32 | nop 33 | nop 34 | nop 35 | nop 36 | nop 37 | nop 38 | db 1 39 | 40 | SECTION "func18",ROM0[$18] 41 | ld a,[$DFA5] 42 | cp $2B 43 | ret 44 | 45 | SECTION "func20",ROM0[$20] 46 | ld a,1 47 | bankswitch 48 | ret 49 | 50 | SECTION "func30",ROM0[$30] 51 | jp $B6E 52 | 53 | SECTION "func38",ROM0[$38] 54 | ret 55 | 56 | SECTION "vblank",ROM0[$40] 57 | push af 58 | push hl 59 | push de 60 | push bc 61 | jp $769 62 | 63 | SECTION "lcdc",ROM0[$48] 64 | jp $99F 65 | 66 | SECTION "timer",ROM0[$50] 67 | reti 68 | 69 | SECTION "serial",ROM0[$58] 70 | reti 71 | 72 | SECTION "joypad",ROM0[$60] 73 | reti 74 | 75 | SECTION "unknownhome",ROM0[$61] 76 | INCBIN "basebc.gb",$61,$100-$61 77 | 78 | SECTION "header",ROM0[$100] 79 | nop 80 | jp $0150 81 | 82 | SECTION "start",ROM0[$150] 83 | 84 | Function150: 85 | jp $06F4 86 | Function153: 87 | jp $0713 88 | Function156: 89 | jp $06AD 90 | Function159: 91 | jp $0B31 92 | Function15C: 93 | jp $0CB5 94 | Function15F: 95 | jp $0CD3 96 | Function162: 97 | jp $0C8F 98 | Function165: 99 | jp $0F66 100 | Function168: 101 | jp $0F70 102 | Function16B: 103 | jp $21F1 104 | Function16E: 105 | jp $21FD 106 | Function171: 107 | jp $1D07 108 | Function174: 109 | jp $2E76 110 | Function177: 111 | jp $2E14 112 | Function17A: 113 | jp $2E45 114 | Function17D: 115 | jp $0C12 116 | Function180: 117 | jp $0BDA 118 | Function183: 119 | jp $0C05 120 | Function186: 121 | jp $0BF0 122 | Function189: 123 | jp $0BE7 124 | Function18C: 125 | jp $0C1D 126 | Function18F: 127 | jp $0D88 128 | Function192: 129 | jp $0D93 130 | Function195: 131 | jp $3938 132 | Function198: 133 | jp $3CD7 134 | Function19B: 135 | jp $3A4F 136 | Function19E: 137 | jp $3D0D 138 | Function1A1: 139 | jp $3D96 140 | Function1A4: 141 | jp $133A 142 | Function1A7: 143 | jp $1DD4 144 | Function1AA: 145 | jp $1DC9 146 | Function1AD: 147 | jp $3E91 148 | Function1B0: 149 | jp $0F44 150 | Function1B3: 151 | jp $3D86 152 | Function1B6: 153 | jp $0B50 154 | Function1B9: 155 | jp $0B6E 156 | Function1BC: 157 | jp $0AB7 158 | Function1BF: 159 | jp $0E76 160 | Function1C2: 161 | jp $0E67 162 | Function1C5: 163 | jp $0E82 164 | Function1C8: 165 | jp $22CD 166 | Function1CB: 167 | jp $22AC 168 | Function1CE: 169 | jp $22DE 170 | Function1D1: 171 | jp $228D 172 | Function1D4: 173 | jp $23BE 174 | Function1D7: 175 | jp $29DA 176 | Function1DA: 177 | jp $27BB 178 | Function1DD: 179 | jp $2633 180 | Function1E0: 181 | jp $2636 182 | Function1E3: 183 | jp $2405 184 | Function1E6: 185 | jp $2738 186 | Function1E9: 187 | jp $223A 188 | Function1EC: 189 | jp $27C4 190 | Function1EF: 191 | jp $26BA 192 | Function1F2: 193 | jp $266B 194 | Function1F5: 195 | jp $2670 196 | Function1F8: 197 | jp $2693 198 | Function1FB: 199 | jp $2B30 200 | Function1FE: 201 | jp $2FE2 202 | Function201: 203 | jp $26FE 204 | Function204: 205 | jp $270B 206 | Function207: 207 | jp $2437 208 | Function20A: 209 | jp $243B 210 | Function20D: 211 | jp $0F06 212 | Function210: 213 | jp $2B71 214 | Function213: 215 | jp $2620 216 | Function216: 217 | jp $22EF 218 | Function219: 219 | jp $2728 220 | Function21C: 221 | jp $2718 222 | Function21F: 223 | jp $2877 224 | Function222: 225 | jp $2882 226 | Function225: 227 | jp $2984 228 | Function228: 229 | jp $27A1 230 | Function22B: 231 | jp $0C72 232 | Function22E: 233 | jp $25CC 234 | Function231: 235 | jp $2345 236 | Function234: 237 | jp $2267 238 | Function237: 239 | jp $29C4 240 | Function23A: 241 | jp $2973 242 | Function23D: 243 | jp $2B0B 244 | Function240: 245 | jp $296A 246 | Function243: 247 | jp $2AD8 248 | Function246: 249 | jp $246D 250 | Function249: 251 | jp $2328 252 | Function24C: 253 | jp $2306 254 | Function24F: 255 | jp $2309 256 | Function252: 257 | jp $2453 258 | Function255: 259 | jp $2356 260 | Function258: 261 | jp $2AA5 262 | Function25B: 263 | jp $2AB1 264 | Function25E: 265 | jp $2AB6 266 | Function261: 267 | jp $2607 268 | Function264: 269 | jp $25D1 270 | Function267: 271 | jp $2356 272 | Function26A: 273 | jp $2486 274 | Function26D: 275 | jp $24FC 276 | Function270: 277 | jp $250C 278 | Function273: 279 | jp $2A5D 280 | Function276: 281 | jp $2A51 282 | Function279: 283 | jp $25F8 284 | Function27C: 285 | jp $25FD 286 | Function27F: 287 | jp $25ED 288 | Function282: 289 | jp $28B2 290 | Function285: 291 | jp $2A92 292 | Function288: 293 | jp $288A 294 | Function28B: 295 | jp $25DB 296 | Function28E: 297 | jp $0C72 298 | Function291: 299 | jp $29AF 300 | Function294: 301 | jp $2A24 302 | Function297: 303 | jp $2A32 304 | Function29A: 305 | jp $2A6C 306 | Function29D: 307 | jp $2A6A 308 | Function2A0: 309 | jp $27CD 310 | Function2A3: 311 | jp $27E3 312 | Function2A6: 313 | jp $2366 314 | Function2A9: 315 | jp $23AF 316 | Function2AC: 317 | jp $2389 318 | Function2AF: 319 | jp $239C 320 | Function2B2: 321 | jp $1457 322 | Function2B5: 323 | jp $146A 324 | Function2B8: 325 | jp $249E 326 | Function2BB: 327 | jp $1C36 328 | Function2BE: 329 | jp $1C77 330 | Function2C1: 331 | jp $0FB1 332 | Function2C4: 333 | jp $0F9D 334 | Function2C7: 335 | jp Function42C 336 | Function2CA: 337 | jp Function43E 338 | Function2CD: 339 | jp $05B2 340 | Function2D0: 341 | jp $3EB5 342 | Function2D3: 343 | jp Function5C7 344 | Function2D6: 345 | jp $1275 346 | Function2D9: 347 | jp $1285 348 | Function2DC: 349 | jp $1293 350 | Function2DF: 351 | jp $21BC 352 | Function2E2: 353 | jp $0EB1 354 | Function2E5: 355 | jp $0EAF 356 | Function2E8: 357 | jp $0FCC 358 | Function2EB: 359 | jp $0FF8 360 | Function2EE: 361 | jp $1CEC 362 | Function2F1: 363 | jp $1643 364 | Function2F4: 365 | jp $1CD5 366 | Function2F7: 367 | jp $0F14 368 | Function2FA: 369 | jp $100D 370 | Function2FD: 371 | jp Function548 372 | Function300: 373 | jp Function552 374 | Function303: 375 | jp Function53E 376 | Function306: 377 | jp $134F 378 | Function309: 379 | jp $0561 380 | Function30C: 381 | jp $1CBE 382 | Function30F: 383 | jp $0EEB 384 | Function312: 385 | jp $049A 386 | Function315: 387 | jp $2440 388 | Function318: 389 | jp $2B78 390 | Function31B: 391 | jp $246F 392 | Function31E: 393 | jp $2B8C 394 | Function321: 395 | jp $2BAE 396 | Function324: 397 | jp $2BBC 398 | Function327: 399 | jp $2BCB 400 | Function32A: 401 | jp Function467 402 | Function32D: 403 | jp $04B3 404 | Function330: 405 | jp Function4FD 406 | Function333: 407 | jp Function513 408 | Function336: 409 | jp Function4C4 410 | Function339: 411 | jp Function4DB 412 | Function33C: 413 | jp Function472 414 | Function33F: 415 | jp Function483 416 | Function342: 417 | jp $1170 418 | Function345: 419 | jp $0B68 420 | Function348: 421 | jp $0DBD 422 | Function34B: 423 | jp $0DFF 424 | Function34E: 425 | jp $06E0 426 | Function351: 427 | jp $06EA 428 | Function354: 429 | jp Function5E5 430 | Function357: 431 | jp $0411 432 | Function35A: 433 | jp Function41B 434 | Function35D: 435 | jp $065A 436 | Function360: 437 | jp $0664 438 | Function363: 439 | jp $066E 440 | Function366: 441 | jp $0678 442 | Function369: 443 | jp $0682 444 | Function36C: 445 | jp $068C 446 | Function36F: 447 | jp $260C 448 | Function372: 449 | jp $0696 450 | Function375: 451 | jp Function4EC 452 | Function378: 453 | jp $105C 454 | Function37B: 455 | jp $0640 456 | Function37E: 457 | jp $1415 458 | Function381: 459 | jp Function410 460 | Function384: 461 | jp $1425 462 | Function387: 463 | jp Function56B 464 | Function38A: 465 | jp Function575 466 | Function38D: 467 | jp Function400 468 | Function390: 469 | jp Function3F6 470 | Function393: 471 | jp $06BE 472 | Function396: 473 | jp $2BDC 474 | Function399: 475 | jp Function531 476 | Function39C: 477 | jp $2C42 478 | Function39F: 479 | jp $3ECF 480 | Function3A2: 481 | jp $1DF1 482 | Function3A5: 483 | jp Function5BD 484 | Function3A8: 485 | jp Function508 486 | Function3AB: 487 | jp $19E6 488 | Function3AE: 489 | jp Function51E 490 | Function3B1: 491 | jp $0C81 492 | Function3B4: 493 | jp $0C82 494 | Function3B7: 495 | jp $1E09 496 | Function3BA: 497 | jp $0F2E 498 | Function3BD: 499 | jp $12DE 500 | Function3C0: 501 | jp $175B 502 | Function3C3: 503 | jp $176D 504 | Function3C6: 505 | jp $040F 506 | Function3C9: 507 | jp $06D6 508 | Function3CC: 509 | jp Function3E4 510 | Function3CF: 511 | jp $0E8F 512 | Function3D2: 513 | jp $0E9D 514 | Function3D5: 515 | jp $177B 516 | Function3D8: 517 | jp $0650 518 | Function3DB: 519 | jp $13C2 520 | Function3DE: 521 | jp Function5D1 522 | Function3E1: 523 | jp $05DB 524 | 525 | Function3E4: ; $3E4 526 | ld a,[$c0d3] 527 | push af 528 | ld a,$01 529 | bankswitch 530 | call $5621 531 | ld e,a 532 | jr Function408 533 | Function3F6: ; $3F6 534 | bankswitch1 535 | call $47ac 536 | jr Function408 537 | Function400: ; $400 538 | bankswitch1 539 | call $5a85 540 | Function408: ; $408 541 | pop af 542 | bankswitch 543 | ret 544 | 545 | Function410: ; $410 546 | ret 547 | 548 | Function411: ; $411 549 | bankswitch1 550 | call $6a58 551 | jr Function492 552 | Function41B: ; $41B 553 | ld a,[$c0d3] 554 | push af 555 | ld a,$02 556 | bankswitch 557 | call $401c 558 | jr Function492 559 | Function42C: ; $42C 560 | ld a,[$c0d3] 561 | push af 562 | ld a,[$c0d5] 563 | bankswitch 564 | call $3890 565 | jr Function492 566 | Function43E: ; $43E 567 | ld hl,$c577 568 | ld de,$cc00 569 | ld bc,$0019 570 | call $0c12 571 | ld hl,$c577 572 | ld bc,$0019 573 | xor a 574 | call $0c1d 575 | ld a,$80 576 | ld [$cd57],a 577 | ld hl,$cc00 578 | .loop 579 | ld a,[hli] 580 | or a 581 | ret Z 582 | inc hl 583 | push hl 584 | call $1d07 585 | pop hl 586 | jr .loop 587 | Function467: ; $467 588 | ld a,$02 589 | bankswitch 590 | jp $4010 591 | Function472: ; $472 592 | ld a,[$c0d3] 593 | push af 594 | ld a,$02 595 | bankswitch 596 | call $4010 597 | jr Function492 598 | Function483: ; $483 599 | ld a,[$c0d3] 600 | push af 601 | ld a,$02 602 | bankswitch 603 | call $4019 604 | Function492: ; $492 605 | pop af 606 | bankswitch 607 | ret 608 | 609 | Function49A: ; $49A 610 | call $2b30 611 | bit 1,a 612 | ret Z 613 | ld a,$15 614 | add c 615 | ld l,a 616 | ld a,[hl] 617 | or a 618 | ret nZ 619 | pop de 620 | ld a,$02 621 | bankswitch 622 | jp $4004 623 | 624 | Function4B3: ; $4B3 625 | ld a,[$c0d3] 626 | push af 627 | ld a,$02 628 | bankswitch 629 | call $4007 630 | jr Function492 631 | 632 | Function4C4: ; $4C4 633 | ld [$c0dd],a 634 | ld a,[$c0d3] 635 | push af 636 | ld a,$02 637 | bankswitch 638 | ld a,[$c0dd] 639 | call $4013 640 | jr Function529 641 | Function4DB: ; $4DB 642 | ld a,[$c0d3] 643 | push af 644 | ld a,$02 645 | bankswitch 646 | call $4016 647 | jr Function529 648 | Function4EC: ; $4EC 649 | ld a,[$c0d3] 650 | push af 651 | ld a,$02 652 | bankswitch 653 | call $401f 654 | jr Function529 655 | Function4FD: ; $4FD 656 | ld a,$02 657 | bankswitch 658 | jp $400a 659 | Function508: ; $508 660 | ld a,$02 661 | bankswitch 662 | jp $401f 663 | Function513: ; $513 664 | ld a,$02 665 | bankswitch 666 | jp $400d 667 | Function51E: ; $51E 668 | ld a,$02 669 | bankswitch 670 | jp $4022 671 | Function529: ; $529 672 | pop af 673 | bankswitch 674 | ret 675 | 676 | Function531: ; $531 677 | ld [$df97],a 678 | ld a,$39 679 | ld [$ffaf],a 680 | ld a,$40 681 | ld [$ffb0],a 682 | jr Function57F 683 | Function53E: ; $53E 684 | ld a,$2d 685 | ld [$ffaf],a 686 | ld a,$40 687 | ld [$ffb0],a 688 | jr Function57F 689 | Function548: ; $548 690 | ld a,$24 691 | ld [$ffaf],a 692 | ld a,$40 693 | ld [$ffb0],a 694 | jr Function57F 695 | Function552: ; $552 696 | push de 697 | call $0c12 698 | pop hl 699 | ld a,$27 700 | ld [$ffaf],a 701 | ld a,$40 702 | ld [$ffb0],a 703 | jr Function57F 704 | Function55F: ; $55F 705 | ld a,$30 706 | ld [$ffaf],a 707 | ld a,$40 708 | ld [$ffb0],a 709 | jr Function57F 710 | Function56B: ; $56B 711 | ld a,$33 712 | ld [$ffaf],a 713 | ld a,$40 714 | ld [$ffb0],a 715 | jr Function57F 716 | Function575: ; $575 717 | ld a,$36 718 | ld [$ffaf],a 719 | ld a,$40 720 | ld [$ffb0],a 721 | jr Function57F 722 | Function57F: ; $57F 723 | ld a,$03 724 | ld [$ffb1],a 725 | ld a,[$c0d3] 726 | push af 727 | ld a,[$ffb1] 728 | bankswitch 729 | ld a,$c3 730 | ld [$ffae],a 731 | call $ffae 732 | pop af 733 | bankswitch 734 | ret 735 | 736 | Function59E: ; $59E 737 | ld a,$18 738 | ld [$ffaf],a 739 | ld a,$40 740 | ld [$ffb0],a 741 | jr Function57F 742 | Function5A8: ; $5A8 743 | ld a,$1b 744 | ld [$ffaf],a 745 | ld a,$40 746 | ld [$ffb0],a 747 | jr Function57F 748 | Function5B0: ; $5B0 749 | ld a,$03 750 | bankswitch 751 | jp $400f 752 | Function5BD: 753 | ld a,$3c 754 | ld [$ffaf],a 755 | ld a,$40 756 | ld [$ffb0],a 757 | jr Function57F 758 | Function5C7: ; $5BA 759 | ld a,$0c 760 | ld [$ffaf],a 761 | ld a,$40 762 | ld [$ffb0],a 763 | jr Function57F 764 | Function5D1: 765 | ld a,$45 766 | ld [$ffaf],a 767 | ld a,$40 768 | ld [$ffb0],a 769 | jr Function57F 770 | Function5D9: 771 | ld a,$48 772 | ld [$ffaf],a 773 | ld a,$40 774 | ld [$ffb0],a 775 | jr Function57F 776 | Function5E5: 777 | ld a,[$c0d3] 778 | push af 779 | ld a,$06 780 | bankswitch 781 | call $400b 782 | jp $0529 783 | 784 | Function5F7: ; $5F7 785 | INCBIN "basebc.gb",$5F7,$4000-$5F7 786 | 787 | SECTION "bank1",ROMX,BANK[$1] 788 | INCBIN "basebc.gb",$4000,$4000 789 | 790 | SECTION "bank2",ROMX,BANK[$2] 791 | INCBIN "basebc.gb",$8000,$4000 792 | 793 | SECTION "bank3",ROMX,BANK[$3] 794 | INCBIN "basebc.gb",$C000,$4000 795 | 796 | SECTION "bank4",ROMX,BANK[$4] 797 | INCBIN "basebc.gb",$10000,$4000 798 | 799 | SECTION "bank5",ROMX,BANK[$5] 800 | INCBIN "basebc.gb",$14000,$4000 801 | 802 | SECTION "bank6",ROMX,BANK[$6] 803 | INCBIN "basebc.gb",$18000,$4000 804 | 805 | SECTION "bank7",ROMX,BANK[$7] 806 | Function1C000: 807 | jp $6e62 808 | 809 | Function1C003: 810 | jp $6d92 811 | 812 | Function1C006: 813 | jp $7709 814 | 815 | Function1C009: 816 | jp $4021 817 | 818 | Function1C00C: 819 | jp $77e7 820 | 821 | Function1C00F: 822 | jp $7834 823 | 824 | Function1C012: 825 | jp $77e6 826 | 827 | Function1C015: 828 | jp $77d3 829 | 830 | Function1C018: 831 | jp $7b56 832 | 833 | Function1C01B: 834 | jp $7b56 835 | 836 | Function1C01E: 837 | jp $7b56 838 | 839 | INCBIN "basebc.gb",$1C021,$20000-$1C021 840 | 841 | SECTION "bank8",ROMX,BANK[$8] 842 | INCBIN "basebc.gb",$20000,$4000 843 | 844 | SECTION "bank9",ROMX,BANK[$9] 845 | Pointer24000: 846 | dw Pointers24008 847 | Pointer24002: 848 | dw Data2406D 849 | Function24004: 850 | jp $7819 851 | Byte24007: 852 | db $32 853 | Pointers24008: 854 | dw $408B 855 | dw $409D 856 | dw $409D 857 | dw $409D 858 | dw $40AF 859 | dw $47A1 860 | dw $47B3 861 | dw $40C1 862 | dw $4DF7 863 | dw $54A3 864 | dw $54B5 865 | dw $54C7 866 | dw $54D9 867 | dw $54EB 868 | dw $54FD 869 | dw $550F 870 | dw $5521 871 | dw $5533 872 | dw $5C88 873 | dw $4DF7 874 | dw $686C 875 | dw $687E 876 | dw $6890 877 | dw $4E6E 878 | dw $4E80 879 | dw $5261 880 | dw $5273 881 | dw $4DF7 882 | dw $4E6E 883 | dw $4E6E 884 | dw $4E6E 885 | dw $4E6E 886 | dw $5FFB 887 | dw $600D 888 | dw $601F 889 | dw $6031 890 | dw $6043 891 | dw $64D4 892 | dw $64E6 893 | dw $6824 894 | dw $6836 895 | dw $6848 896 | dw $685A 897 | dw $6DF0 898 | dw $4DF7 899 | dw $6DF0 900 | dw $6E02 901 | dw $6E14 902 | dw $6E26 903 | dw $4DF7 904 | db $FF 905 | 906 | Data2406D: 907 | 908 | INCBIN "basebc.gb",$2406d,$28000-$2406d 909 | 910 | SECTION "bankA",ROMX,BANK[$A] 911 | Function28000: 912 | jp $432e 913 | 914 | Function28003: 915 | jp $431b 916 | 917 | Function28006: 918 | jp $424f 919 | 920 | Function28009: 921 | jp $4211 922 | 923 | Function2800C: 924 | jp $4202 925 | 926 | Function2800F: 927 | jp $4135 928 | 929 | Function28012: 930 | jp $5e6e 931 | 932 | Function28015: 933 | jp $7d83 934 | 935 | Function28018: 936 | jp $401b 937 | 938 | INCBIN "basebc.gb",$2801b,$2c000-$2801b 939 | 940 | SECTION "bankB",ROMX,BANK[$B] 941 | 942 | Pointer2C000: 943 | dw Pointers2C007 944 | Pointer2C002: 945 | dw $7868 946 | Function2C004: 947 | jp $78da 948 | Pointers2C007: 949 | dw Data2C015 950 | dw Data2C01E 951 | dw Data2C02B 952 | dw Data2C038 953 | dw Data2C04A 954 | dw Data2C053 955 | dw Data2C041 956 | 957 | Data2C015: 958 | db $04,$00,$5C,$40,$76,$04,$9C,$40,$00 959 | Data2C01E: 960 | db $04,$00,$5C,$40,$12,$04,$FC,$47,$49,$16,$3C,$56,$00 961 | Data2C02B: 962 | db $04,$00,$5C,$40,$12,$04,$FC,$47,$5C,$16,$1C,$49,$00 963 | Data2C038: 964 | db $04,$00,$5C,$40,$73,$04,$2C,$62,$00 965 | Data2C041: 966 | db $04,$00,$5C,$40,$74,$04,$5C,$69,$00 967 | Data2C04A: 968 | db $04,$00,$5C,$40,$75,$04,$9C,$70,$00 969 | Data2C053: 970 | db $04,$00,$5C,$40,$76,$04,$CC,$5A,$00 971 | 972 | INCBIN "basebc.gb",$2C05C,$30000-$2C05C 973 | 974 | SECTION "bankC",ROMX,BANK[$C] 975 | Pointer30000: 976 | dw $4039 977 | 978 | Function30002: 979 | jp $4038 980 | 981 | Function30005: 982 | jp $737f 983 | 984 | Function30008: 985 | jp Function300D3 986 | 987 | Function3000B: 988 | jp Function300D9 989 | 990 | Function3000E: 991 | jp Function300DA 992 | 993 | Function30011: 994 | jp Function30038 995 | 996 | Pointers30014: 997 | dw $4727 998 | dw $48b0 999 | dw $4ffa 1000 | dw $53e0 1001 | dw $560b 1002 | dw $57b0 1003 | dw $58a1 1004 | dw $5d78 1005 | dw $5e99 1006 | dw $5ff6 1007 | dw $607f 1008 | dw $66db 1009 | dw $68a8 1010 | dw $68f1 1011 | dw $7c61 1012 | dw $6bda 1013 | dw $78ca 1014 | dw $7af0 1015 | 1016 | Function30038: 1017 | ret 1018 | 1019 | Pointers30039: 1020 | dw Function300DB 1021 | dw Function300DB 1022 | dw Function300DB 1023 | dw Function300DB 1024 | dw Function300DB 1025 | dw Function300DB 1026 | dw Function300DB 1027 | dw Function300DB 1028 | dw Function300DB 1029 | dw Function300DB 1030 | dw Function300DB 1031 | dw Function300DB 1032 | dw Function300DB 1033 | dw Function300DB 1034 | dw $485E 1035 | dw Function300DB 1036 | dw Function300DB 1037 | dw Function300DB 1038 | dw Function300DB 1039 | dw Function300DB 1040 | dw Function300DB 1041 | dw Function300DB 1042 | dw Function300DB 1043 | dw Function300DB 1044 | dw Function300DB 1045 | dw Function300DB 1046 | dw Function300DB 1047 | dw Function300DB 1048 | dw Function300DB 1049 | dw Function300DB 1050 | dw Function300DB 1051 | dw Function300DB 1052 | dw Function300DB 1053 | dw Function300DB 1054 | dw Function300DB 1055 | dw Function300DB 1056 | dw Function300DB 1057 | dw Function300DB 1058 | dw Function300DB 1059 | dw Function300DB 1060 | dw Function300DB 1061 | dw Function300DB 1062 | dw Function300DB 1063 | dw Function300DB 1064 | dw Function300DB 1065 | dw Function300DB 1066 | dw Function300DB 1067 | dw Function300DB 1068 | dw Function300DB 1069 | dw Function300DB 1070 | dw Function300DB 1071 | dw Function300DB 1072 | dw Function300DB 1073 | dw Function300DB 1074 | dw Function300DB 1075 | dw Function300DB 1076 | dw Function300DB 1077 | dw Function300D3 1078 | dw Function300DB 1079 | dw Function300DB 1080 | dw $4DF4 1081 | dw Function300DB 1082 | dw $52A0 1083 | dw $5415 1084 | dw $56EE 1085 | dw $5883 1086 | dw $5CB5 1087 | dw Function300DB 1088 | dw Function300DB 1089 | dw $5E62 1090 | dw $605F 1091 | dw $64E1 1092 | dw $678F 1093 | dw $7C61 1094 | dw $6BB6 1095 | dw Function300DB 1096 | dw Function300DB 1097 | 1098 | Function300D3: 1099 | ld [$DF52],a 1100 | jp Function153 1101 | 1102 | Function300D9: 1103 | ret 1104 | 1105 | Function300DA: 1106 | ret 1107 | 1108 | Function300DB: 1109 | 1110 | INCBIN "basebc.gb",$300db,$34000-$300db 1111 | 1112 | SECTION "bankD",ROMX,BANK[$D] 1113 | INCBIN "basebc.gb",$34000,$4000 1114 | 1115 | SECTION "bankE",ROMX,BANK[$E] 1116 | INCBIN "basebc.gb",$38000,$3c000-$38000 1117 | 1118 | SECTION "bankF",ROMX,BANK[$F] 1119 | Pointer3C000: 1120 | dw $51B7 1121 | 1122 | Function3C002: 1123 | jp Function3C097 1124 | Function3C005: 1125 | jp $4a3c 1126 | Function3C008: 1127 | jp $4a54 1128 | Function3C00B: 1129 | jp $4b32 1130 | Function3C00E: 1131 | jp $4b67 1132 | Function3C011: 1133 | jp $4b79 1134 | Function3C014: 1135 | jp $7149 1136 | Function3C017: 1137 | jp $6f5a 1138 | Function3C01A: 1139 | jp $4023 1140 | Function3C01D: 1141 | jp $6f4e 1142 | Function3C020: 1143 | jp $402f 1144 | Function3C023: 1145 | ld hl,$4ddf 1146 | ld bc,$270 1147 | ld de,$9200 1148 | jp Function15F 1149 | Function3C02F: 1150 | ld a,$c9 1151 | ld [$FF80],a 1152 | xor a 1153 | ld [$FF24],a 1154 | ld [$FF25],a 1155 | ld [$FF26],a 1156 | ld [$FF41],a 1157 | ld [$FF0F],a 1158 | ld [$FFFF],a 1159 | call Function159 1160 | ld hl,$8000 1161 | ld bc,$2000 1162 | xor a 1163 | call Function162 1164 | ld a,$a0 1165 | ld [$FF4B],a 1166 | ld [$FF4A],a 1167 | ld a,0 1168 | ld [$FF47],a 1169 | ld [$FF48],a 1170 | ld [$FF49],a 1171 | ld [$C0D9],a 1172 | call $416A 1173 | call Function2D0 1174 | call $41D3 1175 | ld hl,Data3C083 1176 | ld de,$9900 1177 | ld bc,$14 1178 | call Function15F 1179 | ld a,$e4 1180 | ld [$C0D9],a 1181 | ld b,$78 1182 | .loop 1183 | push bc 1184 | call Function1B9 1185 | pop bc 1186 | dec b 1187 | jr nz,.loop 1188 | ret 1189 | 1190 | Data3C083: 1191 | INCBIN "basebc.gb",$3c083,$3c097-$3c083 1192 | Function3C097: 1193 | INCBIN "basebc.gb",$3c097,$3fc50-$3c097 1194 | 1195 | freespace $3fc50 1196 | -------------------------------------------------------------------------------- /programbank/4.s: -------------------------------------------------------------------------------- 1 | SECTION "programbank10",ROMX[$4000],BANK[$10] 2 | db "Program bank 10 " 3 | 4 | SECTION "programbank11",ROMX[$4000],BANK[$11] 5 | db "Program bank 11 " 6 | 7 | SECTION "programbank12",ROMX[$4000],BANK[$12] 8 | db "Program bank 12 " 9 | 10 | SECTION "programbank13",ROMX[$4000],BANK[$13] 11 | db "Program bank 13 " 12 | 13 | SECTION "programbank14",ROMX[$4000],BANK[$14] 14 | db "Program bank 14 " 15 | 16 | SECTION "programbank15",ROMX[$4000],BANK[$15] 17 | db "Program bank 15 " 18 | 19 | SECTION "programbank16",ROMX[$4000],BANK[$16] 20 | db "Program bank 16 " 21 | 22 | SECTION "programbank18",ROMX[$4000],BANK[$18] 23 | db "Program bank 18 " 24 | 25 | SECTION "programbank19",ROMX[$4000],BANK[$19] 26 | db "Program bank 19 " 27 | 28 | SECTION "programbank1A",ROMX[$4000],BANK[$1A] 29 | db "Program bank 1A " 30 | 31 | SECTION "programbank1B",ROMX[$4000],BANK[$1B] 32 | db "Program bank 1B " 33 | 34 | SECTION "programbank1C",ROMX[$4000],BANK[$1C] 35 | db "Program bank 1C " 36 | 37 | SECTION "programbank1D",ROMX[$4000],BANK[$1D] 38 | db "Program bank 1D " 39 | 40 | SECTION "programbank1E",ROMX[$4000],BANK[$1E] 41 | db "Program bank 1E " 42 | 43 | SECTION "programbank1F",ROMX[$4000],BANK[$1F] 44 | db "Program bank 1F " 45 | -------------------------------------------------------------------------------- /programbank/5.s: -------------------------------------------------------------------------------- 1 | SECTION "programbank10",ROMX[$4000],BANK[$10] 2 | db "Program bank 10 " 3 | 4 | SECTION "programbank12",ROMX[$4000],BANK[$12] 5 | db "Program bank 12 " 6 | 7 | SECTION "programbank13",ROMX[$4000],BANK[$13] 8 | db "Program bank 13 " 9 | 10 | SECTION "programbank14",ROMX[$4000],BANK[$14] 11 | db "Program bank 14 " 12 | 13 | SECTION "programbank15",ROMX[$4000],BANK[$15] 14 | db "Program bank 15 " 15 | 16 | SECTION "programbank16",ROMX[$4000],BANK[$16] 17 | db "Program bank 16 " 18 | 19 | SECTION "programbank18",ROMX[$4000],BANK[$18] 20 | db "Program bank 18 " 21 | 22 | SECTION "programbank19",ROMX[$4000],BANK[$19] 23 | db "Program bank 19 " 24 | 25 | SECTION "programbank1A",ROMX[$4000],BANK[$1A] 26 | db "Program bank 1A " 27 | 28 | SECTION "programbank1B",ROMX[$4000],BANK[$1B] 29 | db "Program bank 1B " 30 | 31 | SECTION "programbank1C",ROMX[$4000],BANK[$1C] 32 | db "Program bank 1C " 33 | 34 | SECTION "programbank1D",ROMX[$4000],BANK[$1D] 35 | db "Program bank 1D " 36 | 37 | SECTION "programbank1E",ROMX[$4000],BANK[$1E] 38 | db "Program bank 1E " 39 | 40 | SECTION "programbank1F",ROMX[$4000],BANK[$1F] 41 | db "Program bank 1F " 42 | -------------------------------------------------------------------------------- /text.charmap: -------------------------------------------------------------------------------- 1 | charmap " ",$01 2 | charmap "0",$02 3 | charmap "1",$03 4 | charmap "2",$04 5 | charmap "3",$05 6 | charmap "4",$06 7 | charmap "5",$07 8 | charmap "6",$08 9 | charmap "7",$09 10 | charmap "8",$0A 11 | charmap "9",$0B 12 | charmap "A",$0C 13 | charmap "B",$0D 14 | charmap "C",$0E 15 | charmap "D",$0F 16 | charmap "E",$10 17 | charmap "F",$11 18 | charmap "G",$12 19 | charmap "H",$13 20 | charmap "I",$14 21 | charmap "J",$15 22 | charmap "K",$16 23 | charmap "L",$17 24 | charmap "M",$18 25 | charmap "N",$19 26 | charmap "O",$1A 27 | charmap "P",$1B 28 | charmap "Q",$1C 29 | charmap "R",$1D 30 | charmap "S",$1E 31 | charmap "T",$1F 32 | charmap "U",$20 33 | charmap "V",$21 34 | charmap "W",$22 35 | charmap "X",$23 36 | charmap "Y",$24 37 | charmap "Z",$25 38 | charmap ".",$26 39 | charmap ",",$27 40 | charmap "'",$28 41 | charmap "!",$29 42 | charmap "?",$2A 43 | charmap "\"",$2E 44 | charmap "-",$2F 45 | charmap "=",$30 46 | --------------------------------------------------------------------------------