org $FFB0 dw $3944 //maker code dw $5241, $4A34 //game code dw $0000, $0000, $0000 db $00 db $00 //expansion ram: none db $00 //special version db $00 //Cartridge type db "SUPER ROBOT WARS4____" db $31 // Hi-rom, fast speed db $02 //Rom type: Rom + Ram + Battery, no co-processor db $0C //rom size: 17~32Mbit db $03 //Sram size: 64Kbit db $00 //Destination code: Japan db $33 //fixed value db $01 //masked rom version dw Complement check dw Checksum ---------------------- C0/EE09: C230 REP #$30 C0/EE0B: A20000 LDX #$0000 C0/EE0E: AF106030 LDA $306010 C0/EE12: 7F00A0C0 ADC $C0A000,X C0/EE16: 7F00A4C0 ADC $C0A400,X C0/EE1A: 7F00A8C0 ADC $C0A800,X C0/EE1E: 7F00ACC0 ADC $C0AC00,X C0/EE22: 9F00DC7E STA $7EDC00,X C0/EE26: E8 INX C0/EE27: E8 INX C0/EE28: E08000 CPX #$0080 C0/EE2B: D0E5 BNE $EE12 C0/EE2D: 297E00 AND #$007E C0/EE30: 8586 STA $86 C0/EE32: A20001 LDX #$0100 C0/EE35: 2040EE JSR $EE40 C0/EE38: CA DEX C0/EE39: D0FA BNE $EE35 C0/EE3B: 8F106030 STA $306010 C0/EE3F: 6B RTL C0/EE40: DA PHX C0/EE41: A586 LDA $86 C0/EE43: 38 SEC C0/EE44: E96E00 SBC #$006E C0/EE47: 297E00 AND #$007E C0/EE4A: AA TAX C0/EE4B: BF00DC7E LDA $7EDC00,X C0/EE4F: 8502 STA $02 C0/EE51: A586 LDA $86 C0/EE53: 38 SEC C0/EE54: E93000 SBC #$0030 C0/EE57: 297E00 AND #$007E C0/EE5A: AA TAX C0/EE5B: BF00DC7E LDA $7EDC00,X C0/EE5F: 4502 EOR $02 C0/EE61: 8502 STA $02 C0/EE63: A586 LDA $86 C0/EE65: 29FF00 AND #$00FF C0/EE68: AA TAX C0/EE69: A502 LDA $02 C0/EE6B: 9F00DC7E STA $7EDC00,X C0/EE6F: A90000 LDA #$0000 C0/EE72: E220 SEP #$20 C0/EE74: A586 LDA $86 C0/EE76: 18 CLC C0/EE77: 6902 ADC #$02 C0/EE79: 297E AND #$7E C0/EE7B: 8586 STA $86 C0/EE7D: A587 LDA $87 C0/EE7F: 18 CLC C0/EE80: 6916 ADC #$16 C0/EE82: 297E AND #$7E C0/EE84: 8587 STA $87 C0/EE86: AA TAX C0/EE87: C220 REP #$20 C0/EE89: BF80DC7E LDA $7EDC80,X C0/EE8D: 8500 STA $00 C0/EE8F: A502 LDA $02 C0/EE91: 9F80DC7E STA $7EDC80,X C0/EE95: A500 LDA $00 C0/EE97: FA PLX C0/EE98: 60 RTS reset: C0/EF98: 78 SEI C0/EF99: 18 CLC C0/EF9A: FB XCE C0/EF9B: D8 CLD C0/EF9C: E230 SEP #$30 C0/EF9E: 9C0042 STZ $4200 C0/EFA1: A98F LDA #$8F //force blank C0/EFA3: 8D0021 STA $2100 C0/EFA6: A901 LDA #$01 //fast speed C0/EFA8: 8D0D42 STA $420D C0/EFAB: 8DBD03 STA $03BD C0/EFAE: C230 REP #$30 C0/EFB0: A90000 LDA #$0000 C0/EFB3: 5B TCD C0/EFB4: A27703 LDX #$0377 C0/EFB7: 9A TXS C0/EFB8: 5CBCEF80 JMP $80EFBC //dummy jump C0/EFBC: 9C0000 STZ $0000 C0/EFBF: A20000 LDX #$0000 C0/EFC2: A00100 LDY #$0001 C0/EFC5: A9FFFF LDA #$FFFF C0/EFC8: 547E7E MVN $7E,$7E //init ram C0/EFCB: 547F7E MVN $7F,$7E C0/EFCE: 4B PHK C0/EFCF: AB PLB C0/EFD0: 2209EE80 JSR $80EE09 C0/EFD4: 22BCE380 JSR $80E3BC C0/EFD8: 204082 JSR $8240 C0/EFDB: 20D1F4 JSR $F4D1 C0/EFDE: E230 SEP #$30 C0/EFE0: A98F LDA #$8F C0/EFE2: 8D8003 STA $0380 C0/EFE5: A981 LDA #$81 C0/EFE7: 8DB603 STA $03B6 C0/EFEA: 8D0042 STA $4200 C0/EFED: 58 CLI C0/EFEE: 4C46F5 JMP $F546 C0/EFF1: 78 SEI C0/EFF2: 5CF6EF80 JMP $80EFF6 C0/EFF6: DB STP C0/EFF7: C230 REP #$30 C0/EFF9: 48 PHA C0/EFFA: DA PHX C0/EFFB: 5A PHY C0/EFFC: 8B PHB C0/EFFD: 4B PHK C0/EFFE: AB PLB C0/EFFF: E230 SEP #$30 C0/F001: AD1142 LDA $4211 C0/F004: 5C08F080 JMP $80F008 C0/F008: A68F LDX $8F C0/F00A: 7C0DF0 JMP ($F00D,X) C0/F546: E230 SEP #$30 C0/F548: A940 LDA #$40 C0/F54A: 0480 TSB $80 C0/F54C: 2480 BIT $80 C0/F54E: 70FC BVS $F54C C0/F550: A920 LDA #$20 C0/F552: 0480 TSB $80 C0/F554: 201D83 JSR $831D C0/F557: E230 SEP #$30 C0/F559: A920 LDA #$20 C0/F55B: 1480 TRB $80 C0/F55D: 24C0 BIT $C0 C0/F55F: 1011 BPL $F572 C0/F561: C230 REP #$30 C0/F563: ADEA03 LDA $03EA C0/F566: 29C000 AND #$00C0 C0/F569: 0DF003 ORA $03F0 C0/F56C: F004 BEQ $F572 C0/F56E: 2236E281 JSR $81E236 C0/F572: E230 SEP #$30 C0/F574: 2C5910 BIT $1059 C0/F577: 100E BPL $F587 C0/F579: ADED03 LDA $03ED C0/F57C: 8910 BIT #$10 C0/F57E: F007 BEQ $F587 C0/F580: ADF103 LDA $03F1 C0/F583: 8920 BIT #$20 C0/F585: F0EB BEQ $F572 C0/F587: A581 LDA $81 C0/F589: 8940 BIT #$40 C0/F58B: F004 BEQ $F591 C0/F58D: 228ADF81 JSR $81DF8A C0/F591: A5AA LDA $AA C0/F593: F01B BEQ $F5B0 C0/F595: C230 REP #$30 C0/F597: 29FF00 AND #$00FF C0/F59A: 0A ASL A C0/F59B: 0A ASL A C0/F59C: AA TAX C0/F59D: BD9DFB LDA $FB9D,X C0/F5A0: 8500 STA $00 C0/F5A2: BD9FFB LDA $FB9F,X C0/F5A5: 8502 STA $02 C0/F5A7: E230 SEP #$30 C0/F5A9: A502 LDA $02 C0/F5AB: 48 PHA C0/F5AC: AB PLB C0/F5AD: DC0000 JMP [$0000]
Phân tích cái này hữu ích hơn mấy cái patch nhiều. Phân tích để hiểu rõ thì muốn bao nhiêu patch, patch kiểu gì cũng được.
Hack nhạc trong trận đánh Mỗi nhân vật trong một hệ Robot có nhạc nền riêng trong trận đấu. Nhạc nền được điều khiển bởi routine bên dưới. C0/831D: E230 SEP #$30 C0/831F: A578 LDA $78 C0/8321: C579 CMP $79 C0/8323: F0D1 BEQ $82F6 C0/8325: E678 INC $78 C0/8327: 290F AND #$0F C0/8329: AA TAX C0/832A: BF90D27E LDA $7ED290,X C0/832E: 8575 STA $75 C0/8330: C9F0 CMP #$F0 C0/8332: 9007 BCC $833B C0/8334: 290F AND #$0F C0/8336: 0A ASL A C0/8337: AA TAX C0/8338: 7CFC84 JMP ($84FC,X) C0/833B: 297F AND #$7F C0/833D: 8F80D27E STA $7ED280 C0/8341: 857A STA $7A C0/8343: 6476 STZ $76 C0/8345: AD4321 LDA $2143 C0/8348: 8920 BIT #$20 C0/834A: D0F9 BNE $8345 C0/834C: A908 LDA #$08 C0/834E: 20C782 JSR $82C7 C0/8351: 2475 BIT $75 C0/8353: 3006 BMI $835B C0/8355: A900 LDA #$00 C0/8357: 8F81D27E STA $7ED281 C0/835B: A57A LDA $7A C0/835D: C940 CMP #$40 C0/835F: B009 BCS $836A C0/8361: 205184 JSR $8451 C0/8364: A002 LDY #$02 C0/8366: B770 LDA [$70],Y C0/8368: 8576 STA $76 C0/836A: 6474 STZ $74 C0/836C: A674 LDX $74 C0/836E: BF80D27E LDA $7ED280,X C0/8372: F047 BEQ $83BB C0/8374: E674 INC $74 C0/8376: C230 REP #$30 C0/8378: 29FF00 AND #$00FF C0/837B: 0A ASL A C0/837C: AA TAX C0/837D: BF0000E3 LDA $E30000,X C0/8381: 8570 STA $70 C0/8383: E230 SEP #$30 C0/8385: A9E3 LDA #$E3 C0/8387: 8572 STA $72 C0/8389: A000 LDY #$00 C0/838B: A200 LDX #$00 C0/838D: B770 LDA [$70],Y C0/838F: C9FF CMP #$FF C0/8391: F0D9 BEQ $836C C0/8393: C9FD CMP #$FD C0/8395: 9003 BCC $839A C0/8397: 4C0584 JMP $8405 C0/839A: E473 CPX $73 C0/839C: F00B BEQ $83A9 C0/839E: DF00D27E CMP $7ED200,X C0/83A2: F007 BEQ $83AB C0/83A4: E8 INX C0/83A5: E473 CPX $73 C0/83A7: D0F5 BNE $839E C0/83A9: E673 INC $73 C0/83AB: 9F00D27E STA $7ED200,X C0/83AF: C8 INY C0/83B0: B770 LDA [$70],Y C0/83B2: 9F40D27E STA $7ED240,X C0/83B6: C8 INY C0/83B7: E02F CPX #$2F C0/83B9: 90D0 BCC $838B C0/83BB: A573 LDA $73 C0/83BD: F041 BEQ $8400 C0/83BF: 6474 STZ $74 C0/83C1: A674 LDX $74 C0/83C3: BF00D27E LDA $7ED200,X C0/83C7: 1023 BPL $83EC C0/83C9: C9FF CMP #$FF C0/83CB: F018 BEQ $83E5 C0/83CD: 297F AND #$7F C0/83CF: AA TAX C0/83D0: BF70D27E LDA $7ED270,X C0/83D4: 8D4121 STA $2141 C0/83D7: BF71D27E LDA $7ED271,X C0/83DB: 8D4221 STA $2142 C0/83DE: A903 LDA #$03 C0/83E0: 20C782 JSR $82C7 C0/83E3: 8011 BRA $83F6 C0/83E5: A911 LDA #$11 C0/83E7: 20C782 JSR $82C7 C0/83EA: 800A BRA $83F6 C0/83EC: 8D4121 STA $2141 C0/83EF: BF40D27E LDA $7ED240,X C0/83F3: 20AF84 JSR $84AF C0/83F6: E230 SEP #$30 C0/83F8: E674 INC $74 C0/83FA: A573 LDA $73 C0/83FC: C574 CMP $74 C0/83FE: D0C1 BNE $83C1 C0/8400: 6490 STZ $90 C0/8402: 6475 STZ $75 C0/8404: 60 RTS C0/8405: D026 BNE $842D C0/8407: A673 LDX $73 C0/8409: E673 INC $73 C0/840B: A9FF LDA #$FF C0/840D: 9F00D27E STA $7ED200,X C0/8411: C8 INY C0/8412: AFE80000 LDA $0000E8 C0/8416: 1012 BPL $842A C0/8418: E8 INX C0/8419: A940 LDA #$40 C0/841B: 9F00D27E STA $7ED200,X C0/841F: 18 CLC C0/8420: A57A LDA $7A C0/8422: 69C0 ADC #$C0 C0/8424: 9F40D27E STA $7ED240,X C0/8428: E673 INC $73 C0/842A: 4C6C83 JMP $836C C0/842D: A673 LDX $73 C0/842F: E673 INC $73 C0/8431: A57C LDA $7C C0/8433: 0980 ORA #$80 C0/8435: 9F00D27E STA $7ED200,X C0/8439: A67C LDX $7C C0/843B: E67C INC $7C C0/843D: E67C INC $7C C0/843F: C8 INY C0/8440: B770 LDA [$70],Y C0/8442: 9F70D27E STA $7ED270,X C0/8446: C8 INY C0/8447: B770 LDA [$70],Y C0/8449: 9F71D27E STA $7ED271,X C0/844D: C8 INY C0/844E: 4C8B83 JMP $838B C0/8451: C230 REP #$30 C0/8453: 297F00 AND #$007F C0/8456: 8570 STA $70 C0/8458: 0A ASL A C0/8459: 6570 ADC $70 C0/845B: AA TAX C0/845C: BF0080E2 LDA $E28000,X C0/8460: 8570 STA $70 C0/8462: BF0180E2 LDA $E28001,X C0/8466: 8571 STA $71 C0/8468: A9001C LDA #$1C00 C0/846B: 857B STA $7B C0/846D: 8023 BRA $8492 C0/846F: AA TAX C0/8470: 18 CLC C0/8471: 692052 ADC #$5220 C0/8474: 857B STA $7B C0/8476: E670 INC $70 C0/8478: E670 INC $70 C0/847A: B770 LDA [$70],Y C0/847C: 8D4221 STA $2142 C0/847F: E670 INC $70 C0/8481: E670 INC $70 C0/8483: E220 SEP #$20 C0/8485: A905 LDA #$05 C0/8487: 20DD84 JSR $84DD C0/848A: C220 REP #$20 C0/848C: 98 TYA C0/848D: 18 CLC C0/848E: 6570 ADC $70 C0/8490: 8570 STA $70 C0/8492: A00000 LDY #$0000 C0/8495: B770 LDA [$70],Y C0/8497: D0D6 BNE $846F C0/8499: A57B LDA $7B C0/849B: 8F70D27E STA $7ED270 C0/849F: E230 SEP #$30 C0/84A1: A980 LDA #$80 C0/84A3: 8F00D27E STA $7ED200 C0/84A7: A902 LDA #$02 C0/84A9: 857C STA $7C C0/84AB: 3A DEC A C0/84AC: 8573 STA $73 C0/84AE: 60 RTS ID nhân vật được đọc ở $7E0078, sau đó kết hợp với địa chỉ bắt đầu ID nhạc ở $7ED290 để lấy ID nhạc tương ứng với nhân vật. Tiếp sau đó là một chuỗi xử lý dẫn tới địa chỉ dữ liệu nhac. Dữ liệu nhạc bắt đầu tại $E20000. Dữ liệu nhạc được đọc và xử lý ở routine sau. C0/84AF: C230 REP #$30 C0/84B1: 29FF00 AND #$00FF C0/84B4: 8570 STA $70 C0/84B6: 0A ASL A C0/84B7: 6570 ADC $70 C0/84B9: AA TAX C0/84BA: BF0000E2 LDA $E20000,X C0/84BE: 8570 STA $70 C0/84C0: BF0100E2 LDA $E20001,X C0/84C4: 8571 STA $71 C0/84C6: A00000 LDY #$0000 C0/84C9: B770 LDA [$70],Y C0/84CB: 8D4221 STA $2142 C0/84CE: E670 INC $70 C0/84D0: E670 INC $70 C0/84D2: B770 LDA [$70],Y C0/84D4: E670 INC $70 C0/84D6: E670 INC $70 C0/84D8: AA TAX C0/84D9: E220 SEP #$20 C0/84DB: A904 LDA #$04 C0/84DD: 20C782 JSR $82C7 C0/84E0: B770 LDA [$70],Y C0/84E2: 8D4221 STA $2142 C0/84E5: 8C4021 STY $2140 C0/84E8: 98 TYA C0/84E9: C8 INY C0/84EA: CD4021 CMP $2140 C0/84ED: D0FB BNE $84EA C0/84EF: CA DEX C0/84F0: D0EE BNE $84E0 C0/84F2: 3A DEC A C0/84F3: 8D4021 STA $2140 C0/84F6: CD4021 CMP $2140 C0/84F9: D0FB BNE $84F6 C0/84FB: 60 RTS Biết được địa chỉ ID nhân vật, địa chỉ ID nhạc thì ta có thể tùy chỉnh nhạc nền trong trận đấu bằng cách bật cheat code của giả lập. Về lý thuyết là vậy, nhưng thực tế có thể khiến đơ game vì một địa chỉ mang nhiều giá trị khác nhau, nhiều ý nghĩa khác nhau ở từng thời điểm khác nhau. Địa chỉ $7E0078 chỉ mang ý nghĩa là nơi chứa ID nhân vật trong một thời điểm, do đó nếu dùng chức năng cheat để cố định một giá trị tại địa chỉ đó có thể đơ game trong những lúc CPU không coi địa chỉ đó là nơi chứa ID nhân vật. Cách để tránh tình trạng này là thay vì đọc ID từ một địa chỉ mang nhiều ý nghĩa ở nhiều thời điểm thì ta đọc ID từ một địa chỉ mang một ý nghĩa duy nhất trong suốt thời gian. Tìm một địa chỉ Ram trống bất kỳ rồi ép CPU đọc tại địa chỉ đó. Chẳng hạn, routine bên trên được viết lại: org $808451 JML newcode oldcode org $Rom trôngd newcode: REP #$30 LDA $7ED2A0 AND #$007F STA $70 ASL ADC $70 TAX LDA $E28000,x JML oldcode Giờ đây CPU chỉ đọc ID nhạc tại $7ED2A0. Nhập số vào địa chỉ này bằng Ram editor của giả lập hoặc cheat code để đổi nhạc nền.
Cũng cách làm như trên thôi. Đổi sang địa chỉ tuyệt đối thì nhạc trận đấu không bị mất. Nhưng nhiêu này chưa đủ, vì chỉ mới hack phần dữ liệu nhạc thôi, chưa hack phần nhạc cụ (sample) nên nhạc mới tuy cùng giai điệu nhưng lệch tông.
Chưa thấy điểm gì đặc sắc ở cái video trên. Lúc chưa biết gì, chỉnh chọt được chút đỉnh thì thấy thần thánh lắm. Nhưng khi đã hiểu rõ mọi thứ thì thấy tất cả đều bình thường. Phân tích rõ ra thì muốn làm gì với cái game đó cũng được.
Trong dữ liệu có dòng "VS" nhưng chưa ai nhìn thấy nó bao giờ. Kích hoạt hiển thị dòng này tại 80F5D2 $B7 $92 LDA [$92],Y [CB01FD] Nhấn chọn dòng dưới org $839984 LDA $0E3A //dòng hiện tại INC JSR $99DA Nhấn chọn dòng trên org $839993 LDA $0E3A DEC JSR $99DA $8399DA CLC ADC #$0005 //tổng số dòng SEC - SBC #$0005 BCS - ADC #$0005 STA $0E3A ASL TAY LDA #$F830 //pallette xám STA $0730 STA $0732 STA $0734 STA $0736 LDA #$FA30 //pallette vàng STA $0730,y STZ $0E97 RTS Hóa ra chức năng của dòng "VS" là hiển thị đoạn demo ở đoạn opening mà nếu không nhấn nút gì sau một chặp thì nó cũng tự động kích hoạt.
Sprite engine Toàn bộ engine điều khiển của game này như bên dưới. Phân tích Routine xử lý sprite được đặt ở routine $80DF81 vào cuối kỳ NMI, sau khi đã DMA dữ liệu đồ họa cần thiết. Routine này kết thúc bằng cách thiết lập các thông số để DMA 0x220 byte bản sao OAM từ địa chỉ $000500 vào Vram vào đầu kỳ NMI sau. Set bit bất kỳ của $03BB để kích hoạt DMA trong kỳ NMI. C0/E0D5: E220 SEP #$20 C0/E0D7: C210 REP #$10 C0/E0D9: A900 LDA #$00 C0/E0DB: 8D0043 STA $4300 C0/E0DE: A904 LDA #$04 C0/E0E0: 8D0143 STA $4301 C0/E0E3: A20005 LDX #$0500 C0/E0E6: 8E0243 STX $4302 C0/E0E9: 9C0443 STZ $4304 C0/E0EC: A22002 LDX #$0220 C0/E0EF: 8E0543 STX $4305 C0/E0F2: A901 LDA #$01 C0/E0F4: 0CBB03 TSB $03BB C0/E0F7: 6B RTL Có 2 phân đoạn sử dụng sprite trong game này, đó là sprite ở map và sprite ở những phần còn lại (như sprite trong trận đấu, sprite ở màn hình tựa đề,....). Sprite ở map là các icon Robot, còn sprite ở trận đấu là các nhân vật Robot trong trận đấu. Sprite ở hai phân đoạn này được quản lý theo hai hướng khác nhau. Vào đầu routine xử lý, CPU sẽ kiểm tra nó đang xử lý phân đoạn nào bằng cách kiểm tra $80. Nếu bit 15 của địa chỉ này được bật/mở/set thì nó sẽ xử lý các sprite trong table như là sprite trên map, còn bit này được tắt/đóng/reset/clear thì nó sẽ xử lý như sprite trong trận đấu và những phân đoạn khác. Mỗi "vật thể" trên map chỉ gồm 1 sprite có kích thước 16x16 pixel trong khi "vật thể" trong trận đấu gồm nhiều sprite hợp thành. Nếu bit 3 của $80 được tắt/đóng/reset/clear thì bỏ qua routine xử lý sprite, tức sprite ở frame đó không được cập nhật, đồng nghĩa với việc hình ảnh nhân vật được giữ nguyên từ frame trước đó, màn hình sẽ không hiển thị sự chuyển động hay thay đổi của sprite. C0/DF81: C230 REP #$30 C0/DF83: 2480 BIT $80 C0/DF85: 101C BPL $DFA3 //bit 15 của $80 được tắt thì nhảy đến đoạn xử lý sprite trong trận đấu C0/DF87: AD880E LDA $0E88 C0/DF8A: 85C5 STA $C5 C0/DF8C: AD8C0E LDA $0E8C //cuộn BG2 theo chiều ngang C0/DF8F: 8D8E03 STA $038E C0/DF92: 8D9203 STA $0392 C0/DF95: AD8A0E LDA $0E8A C0/DF98: 85C7 STA $C7 C0/DF9A: AD8E0E LDA $0E8E //cuộn BG2 theo chiều dọc C0/DF9D: 8D9003 STA $0390 C0/DFA0: 8D9403 STA $0394 C0/DFA3: A580 LDA $80 C0/DFA5: 890800 BIT #$0008 C0/DFA8: F0D6 BEQ $DF80 //bit 3 của $80 được tắt thì thoát routuine C0/DFAA: 9C0007 STZ $0700 //định dạng OAM table #2 C0/DFAD: 9C0207 STZ $0702 C0/DFB0: 9C0407 STZ $0704 C0/DFB3: 9C0607 STZ $0706 C0/DFB6: 9C0807 STZ $0708 C0/DFB9: 9C0A07 STZ $070A C0/DFBC: 9C0C07 STZ $070C C0/DFBF: 9C0E07 STZ $070E C0/DFC2: 9C1007 STZ $0710 C0/DFC5: 9C1207 STZ $0712 C0/DFC8: 9C1407 STZ $0714 C0/DFCB: 9C1607 STZ $0716 C0/DFCE: 9C1807 STZ $0718 C0/DFD1: 9C1A07 STZ $071A C0/DFD4: 9C1C07 STZ $071C C0/DFD7: 9C1E07 STZ $071E Có thể dùng từ "vật thể" để diễn tả mọi sprite xuất hiện trong game này. Các "vật thể" có thể là Robot, vũ khí, viên đạn,... Mỗi vật thể gồm một (ở map) hoặc nhiều sprite (trong trận đấu) hợp thành. Chẳng hạn ở cảnh dưới đây gồm 2 vật thể: Robot đĩa bay bên địch và viên đạn. Vật thể đầu tiên là viên đạn, gồm 6 sprite cỡ nhỏ (8x8 pixel) hợp thành. Vật thể thứ hai là Robot đĩa bay, gồm 4 sprite cỡ lớn (16x16 pixel) và 2 sprite cỡ nhỏ hợp thành. Sprite cỡ lớn được đánh dấu bằng khung màu trắng, sprite cỡ nhỏ được đánh dấu bằng khung màu đỏ. Do khung cảnh này sử dụng 12 sprite cho 2 vật thể, mỗi sprite chiếm 4 byte nên có cả thảy 48 byte (0x30) trong phần buffer của OAM được dùng để mô tả cảnh này. Phần buffer của OAM bắt đầu tại $0500, và 2 vật thể này dùng hết 0x30 byte nên bắt đầu từ địa chỉ $0530 trở đi, ta thấy tọa độ Y của tất cả các sprite còn lại đều có giá trị 0xF0, tức pixel thứ 240 từ trên đỉnh màn hình tính xuống. Nói cách khác, 128-12 = 116 sprite còn lại không được sử dụng đến, được giấu ở tọa độ Y = 240, tức nằm ngoài vùng hiển thị của màn hình. Do vậy, mặc dù máy SFC luôn hiển thị 128 sprite trong mỗi frame mà CPU xử lý routine này, nhưng ta không nhìn thấy gì khác ngoài các sprite cấu thành nên vật thể được phép xuất hiện trong phân cảnh đó. Địa chỉ $0500 là nơi bắt đầu phần buffer của OAM table #1, còn OAM table #2 bắt đầu tại $0700 đến $071F. Như vậy, $0500 ~ $071F là đủ điều khiển OAM table #1 và table #2, nhưng game này còn sử dụng đến một số table phụ khác từ $0720 trở đi để tính toán các thành phần trong table. Game này cho phép xuất hiện 0x30 (48) vật thể trên màn hình, mỗi vật thể chiếm 2 byte trong các table phụ nên mỗi table phụ chiếm 0x60 byte. Dưới đây là một vài table phụ. $0720 ~ $077F: table thuộc tính 1 của vật thể $0780 ~ $07DF: table thuộc tính 2 của vật thể $07E0 ~ $083F: table tọa độ X của vật thể $0840 ~ $089F: table tọa độ Y của vật thể $08A0 ~ $08FF: table chứa ID của vật thể phụ như vũ khí trên tay nhân vật, sprite khói lửa,... $0900 ~ $095F: table chứa pointer dẫn đến dữ liệu đồ họa của cái bóng dưới chân nhân vật $0960 ~ $09BF: table chứa thông tin về tốc độ di chuyển, thời gian tồn tại của vật thể, thời gian tồn tại của hiệu ứng trên màn hình $0B40 ~ $0B9E: table địa chỉ Vram của sprite thể hiện vật thể Table phụ đầu tiên là table thuộc tính 1 của vật thể. Đây là checkpoint đầu tiên để kiểm tra xem vật thể có được hiển thị trên màn hình hay không, vật thể dùng pallette màu nào, có mức độ ưu tiên như thế nào. Table phụ thứ hai định nghĩa nên những thuộc tính khác của vật thể: có lật ngược sprite hay không, xác định dữ liệu đồ họa của sprite trong Rom. Hai table phụ tiếp theo chứa thông tin về tọa độ nơi vật thể xuất hiện. Table $0B40 chứa thông tin về địa chỉ Vram của sprite cấu thành nên vật thể. C0/DFEB: A20000 LDX #$0000 C0/DFEE: A03000 LDY #$0030 //xử lý 0x30 vật thể C0/DFF1: BD2007 LDA $0720,X //table thuộc tính 1 C0/DFF4: 2930C0 AND #$C030 C0/DFF7: C930C0 CMP #$C030 //kiểm tra bit 4, bit 5 set C0/DFFA: D008 BNE $E004 C0/DFFC: 20F8E0 JSR $E0F8 //xử lý sprite C0/DFFF: 9003 BCC $E004 C0/E001: 4CCAE0 JMP $E0CA //kết thúc routine Routine xử lý từng sprite ở $80E0F8, nhưng chỉ khi bit 4 và bit 5 của 2 byte thuộc tính 1 được set thì sprite mới được xử lý. Tại routine này, những thông tin như tọa độ X và Y, pallette màu, độ ưu tiên của sprite lần lượt được ghi vào OAM table. C0/E0F8: 865E STX $5E C0/E0FA: 8446 STY $46 C0/E0FC: BD2007 LDA $0720,X //đọc table thuộc tính 1 C0/E0FF: 855C STA $5C C0/E101: 29003E AND #$3E00 //chỉ giữ lại thông tin pallette màu và độ ưu tiên C0/E104: 855A STA $5A C0/E106: BD8007 LDA $0780,X //đọc table thuộc tính 2 C0/E109: 853A STA $3A C0/E10B: 2900C0 AND #$C000 //chỉ giữ lại thông tin lật sprite (bit 15, 14) C0/E10E: 8552 STA $52 C0/E110: BDE007 LDA $07E0,X //đọc thông tin tọa độ X C0/E113: 853C STA $3C C0/E115: BD4008 LDA $0840,X //đọc thông tin tọa độ Y C0/E118: 853E STA $3E C0/E11A: BD400B LDA $0B40,X //offset ID của sprite C0/E11D: 29FF01 AND #$01FF C0/E120: 8550 STA $50 C0/E122: 245B BIT $5B //kiểm tra bit 6 của 2 byte thuộc tính 1 C0/E124: 501F BVC $E145 //nếu bit 6 được bật thì xử lý thành phần phụ như vũ khí của nhân vật C0/E126: BDA008 LDA $08A0,X //đọc pointer đến thành phần phụ C0/E129: 297E00 AND #$007E C0/E12C: AA TAX C0/E12D: BDE007 LDA $07E0,X //đọc tọa độ X của thành phần phụ C0/E130: 18 CLC C0/E131: 653C ADC $3C C0/E133: 853C STA $3C C0/E135: BD4008 LDA $0840,X //đọc tọa độ Y của thành phần phụ C0/E138: 18 CLC C0/E139: 653E ADC $3E C0/E13B: 853E STA $3E C0/E13D: BD2007 LDA $0720,X C0/E140: 294000 AND #$0040 C0/E143: D0E1 BNE $E126 C0/E145: A55C LDA $5C C0/E147: 290700 AND #$0007 C0/E14A: 0A ASL A C0/E14B: AA TAX C0/E14C: 7C4FE1 JMP ($E14F,X) dw $E15F, $E174, $E228D, $E28D dw $E30E, $E30E, $E30E, $E30E C0/E15F: 245B BIT $5B C0/E161: 103B BPL $E19E //nếu bit 7 của 2 byte trong table thuộc tính 1 được set thì xử lý như sprite trên map C0/E163: A53C LDA $3C //xử lý tọa độ sprite trên map C0/E165: 38 SEC C0/E166: E5C5 SBC $C5 C0/E168: 853C STA $3C C0/E16A: A53E LDA $3E C0/E16C: 18 CLC C0/E16D: E5C7 SBC $C7 C0/E16F: 853E STA $3E C0/E171: 4C9EE1 JMP $E19E C0/E174: A53C LDA $3C //tọa độ sprite = tọa độ sprite ÷ 8 C0/E176: 4A LSR A C0/E177: 4A LSR A C0/E178: 4A LSR A C0/E179: 243C BIT $3C C0/E17B: 1003 BPL $E180 C0/E17D: 0900E0 ORA #$E000 C0/E180: 245B BIT $5B C0/E182: 1003 BPL $E187 C0/E184: 38 SEC C0/E185: E5C5 SBC $C5 C0/E187: 853C STA $3C C0/E189: A53E LDA $3E C0/E18B: 4A LSR A C0/E18C: 4A LSR A C0/E18D: 4A LSR A C0/E18E: 243E BIT $3E C0/E190: 1003 BPL $E195 C0/E192: 0900E0 ORA #$E000 C0/E195: 245B BIT $5B C0/E197: 1003 BPL $E19C C0/E199: 18 CLC C0/E19A: E5C7 SBC $C7 C0/E19C: 853E STA $3E C0/E19E: A53B LDA $3B C0/E1A0: 293F00 AND #$003F //trong số thông tin ở table thuộc tính 2, giữ phần thông tin địa chỉ graphic của sprite C0/E1A3: 8530 STA $30 C0/E1A5: 0A ASL A C0/E1A6: 6530 ADC $30 C0/E1A8: AA TAX //khối graphic C0/E1A9: A53A LDA $3A C0/E1AB: 29FF00 AND #$00FF C0/E1AE: 0A ASL A C0/E1AF: A8 TAY //graphic ID trong khối graphic C0/E1B0: BF3000C4 LDA $C40030,X //địa chỉ graphic trong Rom C0/E1B4: 8530 STA $30 C0/E1B6: BF3100C4 LDA $C40031,X C0/E1BA: 8531 STA $31 C0/E1BC: B730 LDA [$30],Y C0/E1BE: 8530 STA $30 C0/E1C0: A00000 LDY #$0000 C0/E1C3: B730 LDA [$30],Y //đọc số lượng sprite trong khối vật thể C0/E1C5: 29FF00 AND #$00FF C0/E1C8: F06A BEQ $E234 C0/E1CA: 8538 STA $38 //ghi số lượng sprite C0/E1CC: C8 INY C0/E1CD: B730 LDA [$30],Y //đọc kích thước, ID sprite C0/E1CF: 8558 STA $58 C0/E1D1: 290010 AND #$1000 C0/E1D4: D003 BNE $E1D9 C0/E1D6: A90008 LDA #$0800 C0/E1D9: EB XBA C0/E1DA: 8554 STA $54 //ghi kích thước sprite C0/E1DC: C8 INY C0/E1DD: B730 LDA [$30],Y //đọc tọa độ tương đối Y của sprite C0/E1DF: 2900FF AND #$FF00 C0/E1E2: 1003 BPL $E1E7 C0/E1E4: 09FF00 ORA #$00FF //nếu Y là số âm C0/E1E7: EB XBA C0/E1E8: 18 CLC C0/E1E9: 2452 BIT $52 //kiểm tra sprite có thuộc tính lật ngược theo chiều dọc không C0/E1EB: 1007 BPL $E1F4 C0/E1ED: 49FFFF EOR #$FFFF //lật đối xứng theo trục hoành C0/E1F0: 38 SEC C0/E1F1: E554 SBC $54 //trừ kích thước 1 tile C0/E1F3: 38 SEC C0/E1F4: 653E ADC $3E //cộng tọa độ Y tương đối với tọa độ Y tuyệt đối C0/E1F6: C8 INY C0/E1F7: C9F1FF CMP #$FFF1 C0/E1FA: B005 BCS $E201 C0/E1FC: C9F000 CMP #$00F0 C0/E1FF: B02D BCS $E22E C0/E201: 29FF00 AND #$00FF C0/E204: EB XBA C0/E205: 8556 STA $56 //ghi tọa độ Y của sprite C0/E207: B730 LDA [$30],Y C0/E209: 2900FF AND #$FF00 C0/E20C: 1003 BPL $E211 C0/E20E: 09FF00 ORA #$00FF //tọa độ Y âm C0/E211: EB XBA C0/E212: 18 CLC C0/E213: 2452 BIT $52 C0/E215: 5007 BVC $E21E //kiểm tra sprite có thuộc tính lật ngược theo chiều dọc không C0/E217: 49FFFF EOR #$FFFF C0/E21A: 38 SEC C0/E21B: E554 SBC $54 //trừ kích thước 1 tile C0/E21D: 38 SEC C0/E21E: 653C ADC $3C //cộng tọa độ X C0/E220: 8534 STA $34 C0/E222: A64E LDX $4E C0/E224: C9F1FF CMP #$FFF1 C0/E227: B011 BCS $E23A //tọa độ X là số âm C0/E229: C90001 CMP #$0100 C0/E22C: 9014 BCC $E242 C0/E22E: C8 INY C0/E22F: C8 INY C0/E230: C638 DEC $38 //lặp đến hết số lượng sprite trong khối vật thể C0/E232: D099 BNE $E1CD C0/E234: A65E LDX $5E C0/E236: A446 LDY $46 C0/E238: 18 CLC C0/E239: 60 RTS C0/E23A: BD0007 LDA $0700,X //2 bit ở table #2 C0/E23D: 054A ORA $4A C0/E23F: 9D0007 STA $0700,X C0/E242: 064A ASL $4A C0/E244: A554 LDA $54 C0/E246: C91000 CMP #$0010 C0/E249: D008 BNE $E253 C0/E24B: BD0007 LDA $0700,X //sprite lớn C0/E24E: 054A ORA $4A C0/E250: 9D0007 STA $0700,X C0/E253: 064A ASL $4A C0/E255: 9006 BCC $E25D C0/E257: 264A ROL $4A C0/E259: E64E INC $4E C0/E25B: E64E INC $4E C0/E25D: A64C LDX $4C //thứ tự sprite trong table C0/E25F: A534 LDA $34 //tọa độ X tuyệt đối C0/E261: 29FF00 AND #$00FF //bỏ bit thừa C0/E264: 0556 ORA $56 //tọa độ Y tuyệt đối C0/E266: 9D0005 STA $0500,X C0/E269: A558 LDA $58 //ID sprite C0/E26B: 18 CLC C0/E26C: 6550 ADC $50 //offset ID của sprite C0/E26E: 4552 EOR $52 //thuộc tính của sprite: lật ngang lật dọc C0/E270: 29FFCF AND #$CFFF //loại bỏ bit thừa C0/E273: 18 CLC C0/E274: 655A ADC $5A //pallette màu, độ ưu tiên C0/E276: 9D0205 STA $0502,X C0/E279: 8A TXA C0/E27A: 18 CLC C0/E27B: 690400 ADC #$0004 C0/E27E: 854C STA $4C C0/E280: C90002 CMP #$0200 C0/E283: D0A9 BNE $E22E C0/E285: A65E LDX $5E C0/E287: A446 LDY $46 C0/E289: 6448 STZ $48 C0/E28B: 38 SEC C0/E28C: 60 RTS Dữ liệu của khối vật thể trong Rom gồm các byte sau: Byte 1: số lượng sprite cấu thành nên vật thể đó 4 byte tiếp theo gồm: số ID của tile đồ họa trong Vram, cỡ sprite (00: nhỏ/01: lớn), tọa độ Y, tọa độ X Với byte chỉ định cỡ sprite, nếu set bit 0 thì có thể chỉ đến sprite trong phạm vi 0x100 tới 0x1FF, tuy nhiên cách dùng này khá bất tiện trong việc chỉ định tile đồ họa của sprite, nên thường không set bit này, mà dùng kết hợp với 2 byte ở table $0B40 để chỉ định tile đồ họa trong phạm vi trên. Cách dùng Bật/tắt hiển thị sprite trong trận đấu: ghi giá trị 16 bit vào buffer table ở $0720 với bit 4, 5 được set ($XX30). Hiển thị sprite trên map: ghi giá trị 16 bit vào buffer table ở $0720 với bit 4, 5, 7 được set ($XXB0). Hiển thị sprite vũ khí, hiệu ứng trong trận đấu: ghi giá trị 16 bit vào buffer table ở $0720 với bit 4, 5, 6 được set ($XX70). Chỉ định ID đồ họa của sprite: ghi giá trị 16 bit vào buffer table ở $0780: với hi-byte là ID của nhóm graphic, low-byte là số ID của sprite trong nhóm đó. Lật ngược sprite theo chiều dọc: ghi giá trị 16 bit vào buffer table ở $0780 với bit 15 được set. Lật ngược sprite theo chiều ngang: ghi giá trị 16 bit vào buffer table ở $0780 với bit 14 được set. Tọa độ X của sprite: ghi giá trị 16 bit vào buffer table ở $07E0. Tọa độ Y của sprite: ghi giá trị 16 bit vào buffer table ở $840. Chỉ định ID đồ họa của sprite trong phạm vi 0x00 ~ 0x01FF: ghi giá trị 16 bit vào buffer table ở $0B40.
Event $1F - 22 C1/83FB: 20718A JSR $8A71 C1/83FE: 242A BIT $2A C1/8400: 700D BVS $840F C1/8402: C9F000 CMP #$00F0 C1/8405: 9023 BCC $842A C1/8407: 290F00 AND #$000F C1/840A: 0A ASL A C1/840B: AA TAX C1/840C: 7C7190 JMP ($9071,X) C1/840F: C9F600 CMP #$00F6 C1/8412: B0F3 BCS $8407 C1/8414: C9F000 CMP #$00F0 //check kanji C1/8417: 903D BCC $8456 //kana C1/8419: 1A INC A C1/841A: 290F00 AND #$000F C1/841D: 8500 STA $00 C1/841F: 20718A JSR $8A71 C1/8422: 8501 STA $01 C1/8424: A500 LDA $00 C1/8426: EB XBA C1/8427: 4C5684 JMP $8456 C1/842A: 652E ADC $2E C1/842C: 8500 STA $00 C1/842E: 20A18A JSR $8AA1 C1/8431: A618 LDX $18 C1/8433: 242A BIT $2A C1/8435: 1012 BPL $8449 C1/8437: BF00807E LDA $7E8000,X C1/843B: 2900FF AND #$FF00 C1/843E: 0500 ORA $00 C1/8440: 9F00807E STA $7E8000,X C1/8444: E618 INC $18 C1/8446: 4CFB83 JMP $83FB C1/8449: A500 LDA $00 C1/844B: 9F00807E STA $7E8000,X C1/844F: E618 INC $18 C1/8451: E618 INC $18 C1/8453: 4CFB83 JMP $83FB C1/8456: 8526 STA $26 C1/8458: C90001 CMP #$0100 C1/845B: B00E BCS $846B C1/845D: A528 LDA $28 C1/845F: 302D BMI $848E C1/8461: 38 SEC C1/8462: E90200 SBC #$0002 C1/8465: 8528 STA $28 C1/8467: B025 BCS $848E C1/8469: 800B BRA $8476 C1/846B: A528 LDA $28 C1/846D: 301F BMI $848E C1/846F: E90300 SBC #$0003 C1/8472: 8528 STA $28 C1/8474: B018 BCS $848E C1/8476: 22198A81 JSR $818A19 C1/847A: A516 LDA $16 C1/847C: 18 CLC C1/847D: 698000 ADC #$0080 C1/8480: 8518 STA $18 C1/8482: 8516 STA $16 C1/8484: A52A LDA $2A C1/8486: 29FF00 AND #$00FF C1/8489: 18 CLC C1/848A: 6528 ADC $28 C1/848C: 8528 STA $28 C1/848E: A426 LDY $26 C1/8490: A618 LDX $18 C1/8492: A5D0 LDA $D0 C1/8494: 18 CLC C1/8495: 6D180E ADC $0E18 C1/8498: 29FF03 AND #$03FF C1/849B: 18 CLC C1/849C: 652E ADC $2E C1/849E: 24D0 BIT $D0 C1/84A0: 101B BPL $84BD C1/84A2: E8 INX C1/84A3: E8 INX C1/84A4: 18 CLC C1/84A5: 690200 ADC #$0002 C1/84A8: 9F00807E STA $7E8000,X C1/84AC: 18 CLC C1/84AD: 690100 ADC #$0001 C1/84B0: 9F40807E STA $7E8040,X C1/84B4: C00001 CPY #$0100 C1/84B7: 9027 BCC $84E0 C1/84B9: E8 INX C1/84BA: E8 INX C1/84BB: 8023 BRA $84E0 C1/84BD: 9F00807E STA $7E8000,X C1/84C1: 18 CLC C1/84C2: 690100 ADC #$0001 C1/84C5: 9F40807E STA $7E8040,X C1/84C9: E8 INX C1/84CA: E8 INX C1/84CB: C00001 CPY #$0100 C1/84CE: 9010 BCC $84E0 C1/84D0: 18 CLC C1/84D1: 690100 ADC #$0001 C1/84D4: 9F00807E STA $7E8000,X C1/84D8: 18 CLC C1/84D9: 690100 ADC #$0001 C1/84DC: 9F40807E STA $7E8040,X C1/84E0: 8618 STX $18 C1/84E2: A526 LDA $26 C1/84E4: 22EB8481 JSR $8184EB //font tileset C1/84E8: 4CFB83 JMP $83FB C1/84EB: 24CE BIT $CE C1/84ED: 3003 BMI $84F2 C1/84EF: 4CB387 JMP $87B3 C1/84F2: 8500 STA $00 C1/84F4: C90001 CMP #$0100 C1/84F7: 9011 BCC $850A C1/84F9: C90005 CMP #$0500 C1/84FC: B006 BCS $8504 C1/84FE: E9FF00 SBC #$00FF C1/8501: 4CC785 JMP $85C7 C1/8504: E90005 SBC #$0500 C1/8507: 4CBD86 JMP $86BD C1/850A: 0A ASL A C1/850B: 0A ASL A C1/850C: 0A ASL A C1/850D: 0A ASL A C1/850E: A8 TAY C1/850F: A5D0 LDA $D0 //char id C1/8511: 0A ASL A C1/8512: 0A ASL A C1/8513: 0A ASL A C1/8514: 0A ASL A C1/8515: 0A ASL A C1/8516: AA TAX C1/8517: E220 SEP #$20 C1/8519: 8B PHB C1/851A: A9EE LDA #$EE C1/851C: 48 PHA C1/851D: AB PLB C1/851E: A908 LDA #$08 C1/8520: 8502 STA $02 C1/8522: 24D1 BIT $D1 C1/8524: 303A BMI $8560 C1/8526: B90080 LDA $8000,Y C1/8529: 9F00807F STA $7F8000,X C1/852D: B90880 LDA $8008,Y C1/8530: 9F20807F STA $7F8020,X C1/8534: A5FD LDA $FD C1/8536: 9F01807F STA $7F8001,X C1/853A: 9F21807F STA $7F8021,X C1/853E: C220 REP #$20 C1/8540: A5FE LDA $FE C1/8542: 9F10807F STA $7F8010,X C1/8546: 9F30807F STA $7F8030,X C1/854A: E220 SEP #$20 C1/854C: C8 INY C1/854D: E8 INX C1/854E: E8 INX C1/854F: C602 DEC $02 C1/8551: D0D3 BNE $8526 C1/8553: C220 REP #$20 C1/8555: A5D0 LDA $D0 C1/8557: 1A INC A C1/8558: 1A INC A C1/8559: 29FF03 AND #$03FF C1/855C: 85D0 STA $D0 C1/855E: AB PLB C1/855F: 6B RTL C1/8560: C220 REP #$20 C1/8562: B90080 LDA $8000,Y C1/8565: 29FF00 AND #$00FF C1/8568: 0A ASL A C1/8569: 0A ASL A C1/856A: 0A ASL A C1/856B: 0A ASL A C1/856C: 8504 STA $04 C1/856E: B90880 LDA $8008,Y C1/8571: 29FF00 AND #$00FF C1/8574: 0A ASL A C1/8575: 0A ASL A C1/8576: 0A ASL A C1/8577: 0A ASL A C1/8578: 8506 STA $06 C1/857A: A5FE LDA $FE C1/857C: 9F50807F STA $7F8050,X C1/8580: 9F70807F STA $7F8070,X C1/8584: E220 SEP #$20 C1/8586: BF00807F LDA $7F8000,X C1/858A: 0505 ORA $05 C1/858C: 9F00807F STA $7F8000,X C1/8590: A504 LDA $04 C1/8592: 9F40807F STA $7F8040,X C1/8596: BF20807F LDA $7F8020,X C1/859A: 0507 ORA $07 C1/859C: 9F20807F STA $7F8020,X C1/85A0: A506 LDA $06 C1/85A2: 9F60807F STA $7F8060,X C1/85A6: A5FD LDA $FD C1/85A8: 9F41807F STA $7F8041,X C1/85AC: 9F61807F STA $7F8061,X C1/85B0: C8 INY C1/85B1: E8 INX C1/85B2: E8 INX C1/85B3: C602 DEC $02 C1/85B5: D0A9 BNE $8560 C1/85B7: C220 REP #$20 C1/85B9: A5D0 LDA $D0 C1/85BB: 1A INC A C1/85BC: 1A INC A C1/85BD: 29FF03 AND #$03FF C1/85C0: 090080 ORA #$8000 C1/85C3: 85D0 STA $D0 C1/85C5: AB PLB C1/85C6: 6B RTL C1/85C7: 0A ASL A C1/85C8: 0A ASL A C1/85C9: 0A ASL A C1/85CA: 0A ASL A C1/85CB: 0A ASL A C1/85CC: A8 TAY C1/85CD: A5D0 LDA $D0 C1/85CF: 0A ASL A C1/85D0: 0A ASL A C1/85D1: 0A ASL A C1/85D2: 0A ASL A C1/85D3: 0A ASL A C1/85D4: AA TAX C1/85D5: E220 SEP #$20 C1/85D7: 8B PHB C1/85D8: A9EE LDA #$EE C1/85DA: 48 PHA C1/85DB: AB PLB C1/85DC: A908 LDA #$08 C1/85DE: 8502 STA $02 C1/85E0: 24D1 BIT $D1 C1/85E2: 305B BMI $863F C1/85E4: B90000 LDA $0000,Y C1/85E7: 9F00807F STA $7F8000,X C1/85EB: B90800 LDA $0008,Y C1/85EE: 9F20807F STA $7F8020,X C1/85F2: B91000 LDA $0010,Y C1/85F5: 9F40807F STA $7F8040,X C1/85F9: B91800 LDA $0018,Y C1/85FC: 9F60807F STA $7F8060,X C1/8600: A5FD LDA $FD C1/8602: 9F01807F STA $7F8001,X C1/8606: 9F21807F STA $7F8021,X C1/860A: 9F41807F STA $7F8041,X C1/860E: 9F61807F STA $7F8061,X C1/8612: C220 REP #$20 C1/8614: A5FE LDA $FE C1/8616: 9F10807F STA $7F8010,X C1/861A: 9F30807F STA $7F8030,X C1/861E: 9F50807F STA $7F8050,X C1/8622: 9F70807F STA $7F8070,X C1/8626: E220 SEP #$20 C1/8628: C8 INY C1/8629: E8 INX C1/862A: E8 INX C1/862B: C602 DEC $02 C1/862D: D0B5 BNE $85E4 C1/862F: C220 REP #$20 C1/8631: A5D0 LDA $D0 C1/8633: 1A INC A C1/8634: 1A INC A C1/8635: 29FF03 AND #$03FF C1/8638: 090080 ORA #$8000 C1/863B: 85D0 STA $D0 C1/863D: AB PLB C1/863E: 6B RTL C1/863F: C220 REP #$20 C1/8641: B90F00 LDA $000F,Y C1/8644: 8504 STA $04 C1/8646: B90000 LDA $0000,Y C1/8649: 0604 ASL $04 C1/864B: 2A ROL A C1/864C: 0604 ASL $04 C1/864E: 2A ROL A C1/864F: 0604 ASL $04 C1/8651: 2A ROL A C1/8652: 0604 ASL $04 C1/8654: 2A ROL A C1/8655: 8504 STA $04 C1/8657: B91700 LDA $0017,Y C1/865A: 8506 STA $06 C1/865C: B90800 LDA $0008,Y C1/865F: 0606 ASL $06 C1/8661: 2A ROL A C1/8662: 0606 ASL $06 C1/8664: 2A ROL A C1/8665: 0606 ASL $06 C1/8667: 2A ROL A C1/8668: 0606 ASL $06 C1/866A: 2A ROL A C1/866B: 8506 STA $06 C1/866D: A5FE LDA $FE C1/866F: 9F50807F STA $7F8050,X C1/8673: 9F70807F STA $7F8070,X C1/8677: E220 SEP #$20 C1/8679: A505 LDA $05 C1/867B: 290F AND #$0F C1/867D: 1F00807F ORA $7F8000,X C1/8681: 9F00807F STA $7F8000,X C1/8685: A504 LDA $04 C1/8687: 9F40807F STA $7F8040,X C1/868B: A507 LDA $07 C1/868D: 290F AND #$0F C1/868F: 1F20807F ORA $7F8020,X C1/8693: 9F20807F STA $7F8020,X C1/8697: A506 LDA $06 C1/8699: 9F60807F STA $7F8060,X C1/869D: A5FD LDA $FD C1/869F: 9F41807F STA $7F8041,X C1/86A3: 9F61807F STA $7F8061,X C1/86A7: C8 INY C1/86A8: E8 INX C1/86A9: E8 INX C1/86AA: C602 DEC $02 C1/86AC: D091 BNE $863F C1/86AE: C220 REP #$20 C1/86B0: A5D0 LDA $D0 C1/86B2: 18 CLC C1/86B3: 690400 ADC #$0004 C1/86B6: 29FF03 AND #$03FF C1/86B9: 85D0 STA $D0 C1/86BB: AB PLB C1/86BC: 6B RTL C1/86BD: 0A ASL A C1/86BE: 0A ASL A C1/86BF: 0A ASL A C1/86C0: 0A ASL A C1/86C1: 0A ASL A C1/86C2: A8 TAY C1/86C3: A5D0 LDA $D0 C1/86C5: 0A ASL A C1/86C6: 0A ASL A C1/86C7: 0A ASL A C1/86C8: 0A ASL A C1/86C9: 0A ASL A C1/86CA: AA TAX C1/86CB: E220 SEP #$20 C1/86CD: 8B PHB C1/86CE: A9E2 LDA #$E2 C1/86D0: 48 PHA C1/86D1: AB PLB C1/86D2: A908 LDA #$08 C1/86D4: 8502 STA $02 C1/86D6: 24D1 BIT $D1 C1/86D8: 305B BMI $8735 C1/86DA: B90040 LDA $4000,Y C1/86DD: 9F00807F STA $7F8000,X C1/86E1: B90840 LDA $4008,Y C1/86E4: 9F20807F STA $7F8020,X C1/86E8: B91040 LDA $4010,Y C1/86EB: 9F40807F STA $7F8040,X C1/86EF: B91840 LDA $4018,Y C1/86F2: 9F60807F STA $7F8060,X C1/86F6: A5FD LDA $FD C1/86F8: 9F01807F STA $7F8001,X C1/86FC: 9F21807F STA $7F8021,X C1/8700: 9F41807F STA $7F8041,X C1/8704: 9F61807F STA $7F8061,X C1/8708: C220 REP #$20 C1/870A: A5FE LDA $FE C1/870C: 9F10807F STA $7F8010,X C1/8710: 9F30807F STA $7F8030,X C1/8714: 9F50807F STA $7F8050,X C1/8718: 9F70807F STA $7F8070,X C1/871C: E220 SEP #$20 C1/871E: C8 INY C1/871F: E8 INX C1/8720: E8 INX C1/8721: C602 DEC $02 C1/8723: D0B5 BNE $86DA C1/8725: C220 REP #$20 C1/8727: A5D0 LDA $D0 C1/8729: 1A INC A C1/872A: 1A INC A C1/872B: 29FF03 AND #$03FF C1/872E: 090080 ORA #$8000 C1/8731: 85D0 STA $D0 C1/8733: AB PLB C1/8734: 6B RTL C1/8735: C220 REP #$20 C1/8737: B90F40 LDA $400F,Y C1/873A: 8504 STA $04 C1/873C: B90040 LDA $4000,Y C1/873F: 0604 ASL $04 C1/8741: 2A ROL A C1/8742: 0604 ASL $04 C1/8744: 2A ROL A C1/8745: 0604 ASL $04 C1/8747: 2A ROL A C1/8748: 0604 ASL $04 C1/874A: 2A ROL A C1/874B: 8504 STA $04 C1/874D: B91740 LDA $4017,Y C1/8750: 8506 STA $06 C1/8752: B90840 LDA $4008,Y C1/8755: 0606 ASL $06 C1/8757: 2A ROL A C1/8758: 0606 ASL $06 C1/875A: 2A ROL A C1/875B: 0606 ASL $06 C1/875D: 2A ROL A C1/875E: 0606 ASL $06 C1/8760: 2A ROL A C1/8761: 8506 STA $06 C1/8763: A5FE LDA $FE C1/8765: 9F50807F STA $7F8050,X C1/8769: 9F70807F STA $7F8070,X C1/876D: E220 SEP #$20 C1/876F: A505 LDA $05 C1/8771: 290F AND #$0F C1/8773: 1F00807F ORA $7F8000,X C1/8777: 9F00807F STA $7F8000,X C1/877B: A504 LDA $04 C1/877D: 9F40807F STA $7F8040,X C1/8781: A507 LDA $07 C1/8783: 290F AND #$0F C1/8785: 1F20807F ORA $7F8020,X C1/8789: 9F20807F STA $7F8020,X C1/878D: A506 LDA $06 C1/878F: 9F60807F STA $7F8060,X C1/8793: A5FD LDA $FD C1/8795: 9F41807F STA $7F8041,X C1/8799: 9F61807F STA $7F8061,X C1/879D: C8 INY C1/879E: E8 INX C1/879F: E8 INX C1/87A0: C602 DEC $02 C1/87A2: D091 BNE $8735 C1/87A4: C220 REP #$20 C1/87A6: A5D0 LDA $D0 C1/87A8: 18 CLC C1/87A9: 690400 ADC #$0004 C1/87AC: 29FF03 AND #$03FF C1/87AF: 85D0 STA $D0 C1/87B1: AB PLB C1/87B2: 6B RTL C1/87B3: 8500 STA $00 C1/87B5: C90001 CMP #$0100 C1/87B8: 9011 BCC $87CB C1/87BA: C90005 CMP #$0500 C1/87BD: B006 BCS $87C5 C1/87BF: E9FF00 SBC #$00FF C1/87C2: 4C6F88 JMP $886F C1/87C5: E90005 SBC #$0500 C1/87C8: 4C4489 JMP $8944 C1/87CB: 0A ASL A C1/87CC: 0A ASL A C1/87CD: 0A ASL A C1/87CE: 0A ASL A C1/87CF: A8 TAY C1/87D0: A5D0 LDA $D0 C1/87D2: 0A ASL A C1/87D3: 0A ASL A C1/87D4: 0A ASL A C1/87D5: 0A ASL A C1/87D6: AA TAX C1/87D7: E220 SEP #$20 C1/87D9: 8B PHB C1/87DA: A9EE LDA #$EE C1/87DC: 48 PHA C1/87DD: AB PLB C1/87DE: A908 LDA #$08 C1/87E0: 8502 STA $02 C1/87E2: 24D1 BIT $D1 C1/87E4: 302C BMI $8812 C1/87E6: B90080 LDA $8000,Y C1/87E9: 9F00807F STA $7F8000,X C1/87ED: B90880 LDA $8008,Y C1/87F0: 9F10807F STA $7F8010,X C1/87F4: A5FD LDA $FD C1/87F6: 9F01807F STA $7F8001,X C1/87FA: 9F11807F STA $7F8011,X C1/87FE: C8 INY C1/87FF: E8 INX C1/8800: E8 INX C1/8801: C602 DEC $02 C1/8803: D0E1 BNE $87E6 C1/8805: C220 REP #$20 C1/8807: A5D0 LDA $D0 C1/8809: 1A INC A C1/880A: 1A INC A C1/880B: 29FF03 AND #$03FF C1/880E: 85D0 STA $D0 C1/8810: AB PLB C1/8811: 6B RTL C1/8812: C220 REP #$20 C1/8814: B90080 LDA $8000,Y C1/8817: 29FF00 AND #$00FF C1/881A: 0A ASL A C1/881B: 0A ASL A C1/881C: 0A ASL A C1/881D: 0A ASL A C1/881E: 8504 STA $04 C1/8820: B90880 LDA $8008,Y C1/8823: 29FF00 AND #$00FF C1/8826: 0A ASL A C1/8827: 0A ASL A C1/8828: 0A ASL A C1/8829: 0A ASL A C1/882A: 8506 STA $06 C1/882C: E220 SEP #$20 C1/882E: BF00807F LDA $7F8000,X C1/8832: 0505 ORA $05 C1/8834: 9F00807F STA $7F8000,X C1/8838: A504 LDA $04 C1/883A: 9F20807F STA $7F8020,X C1/883E: BF10807F LDA $7F8010,X C1/8842: 0507 ORA $07 C1/8844: 9F10807F STA $7F8010,X C1/8848: A506 LDA $06 C1/884A: 9F30807F STA $7F8030,X C1/884E: A5FD LDA $FD C1/8850: 9F21807F STA $7F8021,X C1/8854: 9F31807F STA $7F8031,X C1/8858: C8 INY C1/8859: E8 INX C1/885A: E8 INX C1/885B: C602 DEC $02 C1/885D: D0B3 BNE $8812 C1/885F: C220 REP #$20 C1/8861: A5D0 LDA $D0 C1/8863: 1A INC A C1/8864: 1A INC A C1/8865: 29FF03 AND #$03FF C1/8868: 090080 ORA #$8000 C1/886B: 85D0 STA $D0 C1/886D: AB PLB C1/886E: 6B RTL C1/886F: 0A ASL A C1/8870: 0A ASL A C1/8871: 0A ASL A C1/8872: 0A ASL A C1/8873: 0A ASL A C1/8874: A8 TAY C1/8875: A5D0 LDA $D0 C1/8877: 0A ASL A C1/8878: 0A ASL A C1/8879: 0A ASL A C1/887A: 0A ASL A C1/887B: AA TAX C1/887C: E220 SEP #$20 C1/887E: 8B PHB C1/887F: A9EE LDA #$EE C1/8881: 48 PHA C1/8882: AB PLB C1/8883: A908 LDA #$08 C1/8885: 8502 STA $02 C1/8887: 24D1 BIT $D1 C1/8889: 3045 BMI $88D0 C1/888B: B90000 LDA $0000,Y C1/888E: 9F00807F STA $7F8000,X C1/8892: B90800 LDA $0008,Y C1/8895: 9F10807F STA $7F8010,X C1/8899: B91000 LDA $0010,Y C1/889C: 9F20807F STA $7F8020,X C1/88A0: B91800 LDA $0018,Y C1/88A3: 9F30807F STA $7F8030,X C1/88A7: A5FD LDA $FD C1/88A9: 9F01807F STA $7F8001,X C1/88AD: 9F11807F STA $7F8011,X C1/88B1: 9F21807F STA $7F8021,X C1/88B5: 9F31807F STA $7F8031,X C1/88B9: C8 INY C1/88BA: E8 INX C1/88BB: E8 INX C1/88BC: C602 DEC $02 C1/88BE: D0CB BNE $888B C1/88C0: C220 REP #$20 C1/88C2: A5D0 LDA $D0 C1/88C4: 1A INC A C1/88C5: 1A INC A C1/88C6: 29FF03 AND #$03FF C1/88C9: 090080 ORA #$8000 C1/88CC: 85D0 STA $D0 C1/88CE: AB PLB C1/88CF: 6B RTL C1/88D0: C220 REP #$20 C1/88D2: B90F00 LDA $000F,Y C1/88D5: 8504 STA $04 C1/88D7: B90000 LDA $0000,Y C1/88DA: 0604 ASL $04 C1/88DC: 2A ROL A C1/88DD: 0604 ASL $04 C1/88DF: 2A ROL A C1/88E0: 0604 ASL $04 C1/88E2: 2A ROL A C1/88E3: 0604 ASL $04 C1/88E5: 2A ROL A C1/88E6: 8504 STA $04 C1/88E8: B91700 LDA $0017,Y C1/88EB: 8506 STA $06 C1/88ED: B90800 LDA $0008,Y C1/88F0: 0606 ASL $06 C1/88F2: 2A ROL A C1/88F3: 0606 ASL $06 C1/88F5: 2A ROL A C1/88F6: 0606 ASL $06 C1/88F8: 2A ROL A C1/88F9: 0606 ASL $06 C1/88FB: 2A ROL A C1/88FC: 8506 STA $06 C1/88FE: E220 SEP #$20 C1/8900: A505 LDA $05 C1/8902: 290F AND #$0F C1/8904: 1F00807F ORA $7F8000,X C1/8908: 9F00807F STA $7F8000,X C1/890C: A504 LDA $04 C1/890E: 9F20807F STA $7F8020,X C1/8912: A507 LDA $07 C1/8914: 290F AND #$0F C1/8916: 1F10807F ORA $7F8010,X C1/891A: 9F10807F STA $7F8010,X C1/891E: A506 LDA $06 C1/8920: 9F30807F STA $7F8030,X C1/8924: A5FD LDA $FD C1/8926: 9F21807F STA $7F8021,X C1/892A: 9F31807F STA $7F8031,X C1/892E: C8 INY C1/892F: E8 INX C1/8930: E8 INX C1/8931: C602 DEC $02 C1/8933: D09B BNE $88D0 C1/8935: C220 REP #$20 C1/8937: A5D0 LDA $D0 C1/8939: 18 CLC C1/893A: 690400 ADC #$0004 C1/893D: 29FF03 AND #$03FF C1/8940: 85D0 STA $D0 C1/8942: AB PLB C1/8943: 6B RTL C1/8944: 0A ASL A C1/8945: 0A ASL A C1/8946: 0A ASL A C1/8947: 0A ASL A C1/8948: 0A ASL A C1/8949: A8 TAY C1/894A: A5D0 LDA $D0 C1/894C: 0A ASL A C1/894D: 0A ASL A C1/894E: 0A ASL A C1/894F: 0A ASL A C1/8950: AA TAX C1/8951: E220 SEP #$20 C1/8953: 8B PHB C1/8954: A9E2 LDA #$E2 C1/8956: 48 PHA C1/8957: AB PLB C1/8958: A908 LDA #$08 C1/895A: 8502 STA $02 C1/895C: 24D1 BIT $D1 C1/895E: 3045 BMI $89A5 C1/8960: B90040 LDA $4000,Y C1/8963: 9F00807F STA $7F8000,X C1/8967: B90840 LDA $4008,Y C1/896A: 9F10807F STA $7F8010,X C1/896E: B91040 LDA $4010,Y C1/8971: 9F20807F STA $7F8020,X C1/8975: B91840 LDA $4018,Y C1/8978: 9F30807F STA $7F8030,X C1/897C: A5FD LDA $FD C1/897E: 9F01807F STA $7F8001,X C1/8982: 9F11807F STA $7F8011,X C1/8986: 9F21807F STA $7F8021,X C1/898A: 9F31807F STA $7F8031,X C1/898E: C8 INY C1/898F: E8 INX C1/8990: E8 INX C1/8991: C602 DEC $02 C1/8993: D0CB BNE $8960 C1/8995: C220 REP #$20 C1/8997: A5D0 LDA $D0 C1/8999: 1A INC A C1/899A: 1A INC A C1/899B: 29FF03 AND #$03FF C1/899E: 090080 ORA #$8000 C1/89A1: 85D0 STA $D0 C1/89A3: AB PLB C1/89A4: 6B RTL C1/89A5: C220 REP #$20 C1/89A7: B90F40 LDA $400F,Y C1/89AA: 8504 STA $04 C1/89AC: B90040 LDA $4000,Y C1/89AF: 0604 ASL $04 C1/89B1: 2A ROL A C1/89B2: 0604 ASL $04 C1/89B4: 2A ROL A C1/89B5: 0604 ASL $04 C1/89B7: 2A ROL A C1/89B8: 0604 ASL $04 C1/89BA: 2A ROL A C1/89BB: 8504 STA $04 C1/89BD: B91740 LDA $4017,Y C1/89C0: 8506 STA $06 C1/89C2: B90840 LDA $4008,Y C1/89C5: 0606 ASL $06 C1/89C7: 2A ROL A C1/89C8: 0606 ASL $06 C1/89CA: 2A ROL A C1/89CB: 0606 ASL $06 C1/89CD: 2A ROL A C1/89CE: 0606 ASL $06 C1/89D0: 2A ROL A C1/89D1: 8506 STA $06 C1/89D3: E220 SEP #$20 C1/89D5: A505 LDA $05 C1/89D7: 290F AND #$0F C1/89D9: 1F00807F ORA $7F8000,X C1/89DD: 9F00807F STA $7F8000,X C1/89E1: A504 LDA $04 C1/89E3: 9F20807F STA $7F8020,X C1/89E7: A507 LDA $07 C1/89E9: 290F AND #$0F C1/89EB: 1F10807F ORA $7F8010,X C1/89EF: 9F10807F STA $7F8010,X C1/89F3: A506 LDA $06 C1/89F5: 9F30807F STA $7F8030,X C1/89F9: A5FD LDA $FD C1/89FB: 9F21807F STA $7F8021,X C1/89FF: 9F31807F STA $7F8031,X C1/8A03: C8 INY C1/8A04: E8 INX C1/8A05: E8 INX C1/8A06: C602 DEC $02 C1/8A08: D09B BNE $89A5 C1/8A0A: C220 REP #$20 C1/8A0C: A5D0 LDA $D0 C1/8A0E: 18 CLC C1/8A0F: 690400 ADC #$0004 C1/8A12: 29FF03 AND #$03FF C1/8A15: 85D0 STA $D0 C1/8A17: AB PLB C1/8A18: 6B RTL C1/8A19: A5D0 LDA $D0 C1/8A1B: 1007 BPL $8A24 C1/8A1D: 1A INC A C1/8A1E: 1A INC A C1/8A1F: 29FF03 AND #$03FF C1/8A22: 85D0 STA $D0 C1/8A24: 6B RTL C1/8A25: E210 SEP #$10 C1/8A27: C220 REP #$20 C1/8A29: A48C LDY $8C C1/8A2B: A5D0 LDA $D0 C1/8A2D: 38 SEC C1/8A2E: E5D2 SBC $D2 C1/8A30: 29FF03 AND #$03FF C1/8A33: 24CE BIT $CE C1/8A35: 1001 BPL $8A38 C1/8A37: 0A ASL A C1/8A38: 0A ASL A C1/8A39: 0A ASL A C1/8A3A: 0A ASL A C1/8A3B: 0A ASL A C1/8A3C: 990004 STA $0400,Y C1/8A3F: A5D2 LDA $D2 C1/8A41: 29FF03 AND #$03FF C1/8A44: 24CE BIT $CE C1/8A46: 1001 BPL $8A49 C1/8A48: 0A ASL A C1/8A49: 0A ASL A C1/8A4A: 0A ASL A C1/8A4B: 0A ASL A C1/8A4C: 8500 STA $00 C1/8A4E: 0A ASL A C1/8A4F: 690080 ADC #$8000 C1/8A52: 990204 STA $0402,Y C1/8A55: A97F00 LDA #$007F C1/8A58: 990404 STA $0404,Y C1/8A5B: A5CE LDA $CE C1/8A5D: 18 CLC C1/8A5E: 6500 ADC $00 C1/8A60: 990604 STA $0406,Y C1/8A63: E220 SEP #$20 C1/8A65: A58C LDA $8C C1/8A67: 18 CLC C1/8A68: 6908 ADC #$08 C1/8A6A: 858C STA $8C C1/8A6C: E68E INC $8E C1/8A6E: C230 REP #$30 C1/8A70: 6B RTL C1/8A71: A51E LDA $1E C1/8A73: D00B BNE $8A80 C1/8A75: A00000 LDY #$0000 C1/8A78: B71A LDA [$1A],Y C1/8A7A: 29FF00 AND #$00FF C1/8A7D: E61A INC $1A C1/8A7F: 60 RTS C1/8A80: 29FF00 AND #$00FF C1/8A83: F00E BEQ $8A93 C1/8A85: C61E DEC $1E C1/8A87: 242A BIT $2A C1/8A89: 5004 BVC $8A8F C1/8A8B: A90000 LDA #$0000 C1/8A8E: 60 RTS C1/8A8F: A92800 LDA #$0028 C1/8A92: 60 RTS C1/8A93: C61F DEC $1F C1/8A95: E230 SEP #$30 C1/8A97: 224A8680 JSR $80864A C1/8A9B: C230 REP #$30 C1/8A9D: 29FF00 AND #$00FF C1/8AA0: 60 RTS C1/8AA1: A528 LDA $28 C1/8AA3: 3021 BMI $8AC6 C1/8AA5: 38 SEC C1/8AA6: E90200 SBC #$0002 C1/8AA9: 8528 STA $28 C1/8AAB: B019 BCS $8AC6 C1/8AAD: A94000 LDA #$0040 C1/8AB0: 242A BIT $2A C1/8AB2: 1001 BPL $8AB5 C1/8AB4: 0A ASL A C1/8AB5: 18 CLC C1/8AB6: 6516 ADC $16 C1/8AB8: 8518 STA $18 C1/8ABA: 8516 STA $16 C1/8ABC: A52A LDA $2A C1/8ABE: 29FF00 AND #$00FF C1/8AC1: 18 CLC C1/8AC2: 6528 ADC $28 C1/8AC4: 8528 STA $28 C1/8AC6: 60 RTS #####menu event#### C1/8AC7: A00000 LDY #$0000 //$F0: del frame C1/8ACA: B71A LDA [$1A],Y C1/8ACC: 290700 AND #$0007 C1/8ACF: EB XBA C1/8AD0: 0A ASL A C1/8AD1: 0A ASL A C1/8AD2: 0A ASL A C1/8AD3: AA TAX C1/8AD4: A90004 LDA #$0400 C1/8AD7: 8500 STA $00 C1/8AD9: C8 INY C1/8ADA: B71A LDA [$1A],Y C1/8ADC: 9F00807E STA $7E8000,X C1/8AE0: E8 INX C1/8AE1: E8 INX C1/8AE2: C600 DEC $00 C1/8AE4: D0F6 BNE $8ADC C1/8AE6: A51A LDA $1A C1/8AE8: 18 CLC C1/8AE9: 690300 ADC #$0003 C1/8AEC: 851A STA $1A C1/8AEE: 4CFB83 JMP $83FB C1/8AF1: A00000 LDY #$0000 //$F1: tile pro C1/8AF4: B71A LDA [$1A],Y C1/8AF6: 852E STA $2E C1/8AF8: A51A LDA $1A C1/8AFA: 18 CLC C1/8AFB: 690200 ADC #$0002 C1/8AFE: 851A STA $1A C1/8B00: 4CFB83 JMP $83FB C1/8B03: A00000 LDY #$0000 //$F2 C1/8B06: B71A LDA [$1A],Y C1/8B08: 8504 STA $04 C1/8B0A: 297F00 AND #$007F C1/8B0D: D00B BNE $8B1A C1/8B0F: E230 SEP #$30 C1/8B11: 224A8680 JSR $80864A C1/8B15: C230 REP #$30 C1/8B17: 297F00 AND #$007F C1/8B1A: 8502 STA $02 C1/8B1C: C8 INY C1/8B1D: B71A LDA [$1A],Y C1/8B1F: C9FFFF CMP #$FFFF C1/8B22: D004 BNE $8B28 C1/8B24: 22618680 JSR $808661 C1/8B28: 8500 STA $00 C1/8B2A: 242A BIT $2A C1/8B2C: 3035 BMI $8B63 C1/8B2E: 2403 BIT $03 C1/8B30: 3015 BMI $8B47 C1/8B32: 20A18A JSR $8AA1 C1/8B35: A618 LDX $18 C1/8B37: A500 LDA $00 C1/8B39: 9F00807E STA $7E8000,X C1/8B3D: E618 INC $18 C1/8B3F: E618 INC $18 C1/8B41: C602 DEC $02 C1/8B43: D0ED BNE $8B32 C1/8B45: 8034 BRA $8B7B C1/8B47: 20A18A JSR $8AA1 C1/8B4A: A618 LDX $18 C1/8B4C: BF00807E LDA $7E8000,X C1/8B50: 29FFE3 AND #$E3FF C1/8B53: 0500 ORA $00 C1/8B55: 9F00807E STA $7E8000,X C1/8B59: E618 INC $18 C1/8B5B: E618 INC $18 C1/8B5D: C602 DEC $02 C1/8B5F: D0E6 BNE $8B47 C1/8B61: 8018 BRA $8B7B C1/8B63: 20A18A JSR $8AA1 C1/8B66: A618 LDX $18 C1/8B68: BF00807E LDA $7E8000,X C1/8B6C: 2900FF AND #$FF00 C1/8B6F: 0500 ORA $00 C1/8B71: 9F00807E STA $7E8000,X C1/8B75: E618 INC $18 C1/8B77: C602 DEC $02 C1/8B79: D0E8 BNE $8B63 C1/8B7B: A51A LDA $1A C1/8B7D: 18 CLC C1/8B7E: 690300 ADC #$0003 C1/8B81: 851A STA $1A C1/8B83: 4CFB83 JMP $83FB C1/8B86: A00000 LDY #$0000 //$F3 C1/8B89: B71A LDA [$1A],Y C1/8B8B: 8504 STA $04 C1/8B8D: 297F00 AND #$007F C1/8B90: D00B BNE $8B9D C1/8B92: E230 SEP #$30 C1/8B94: 224A8680 JSR $80864A C1/8B98: C230 REP #$30 C1/8B9A: 297F00 AND #$007F C1/8B9D: 8502 STA $02 C1/8B9F: C8 INY C1/8BA0: B71A LDA [$1A],Y C1/8BA2: C9FFFF CMP #$FFFF C1/8BA5: D004 BNE $8BAB C1/8BA7: 22618680 JSR $808661 C1/8BAB: 8500 STA $00 C1/8BAD: 242A BIT $2A C1/8BAF: 304F BMI $8C00 C1/8BB1: A500 LDA $00 C1/8BB3: 2900FC AND #$FC00 C1/8BB6: 8506 STA $06 C1/8BB8: 2403 BIT $03 C1/8BBA: 301C BMI $8BD8 C1/8BBC: 20A18A JSR $8AA1 C1/8BBF: A618 LDX $18 C1/8BC1: A500 LDA $00 C1/8BC3: 29FF03 AND #$03FF C1/8BC6: 0506 ORA $06 C1/8BC8: 9F00807E STA $7E8000,X C1/8BCC: E600 INC $00 C1/8BCE: E618 INC $18 C1/8BD0: E618 INC $18 C1/8BD2: C602 DEC $02 C1/8BD4: D0E6 BNE $8BBC C1/8BD6: 8040 BRA $8C18 C1/8BD8: 20A18A JSR $8AA1 C1/8BDB: A618 LDX $18 C1/8BDD: A500 LDA $00 C1/8BDF: 29FF03 AND #$03FF C1/8BE2: 0506 ORA $06 C1/8BE4: 9F00807E STA $7E8000,X C1/8BE8: 18 CLC C1/8BE9: 690200 ADC #$0002 C1/8BEC: 8500 STA $00 C1/8BEE: 291000 AND #$0010 C1/8BF1: 18 CLC C1/8BF2: 6500 ADC $00 C1/8BF4: 8500 STA $00 C1/8BF6: E618 INC $18 C1/8BF8: E618 INC $18 C1/8BFA: C602 DEC $02 C1/8BFC: D0DA BNE $8BD8 C1/8BFE: 8018 BRA $8C18 C1/8C00: 20A18A JSR $8AA1 C1/8C03: A618 LDX $18 C1/8C05: BF00807E LDA $7E8000,X C1/8C09: 2900FF AND #$FF00 C1/8C0C: 0500 ORA $00 C1/8C0E: 9F00807E STA $7E8000,X C1/8C12: E618 INC $18 C1/8C14: C602 DEC $02 C1/8C16: D0E8 BNE $8C00 C1/8C18: A51A LDA $1A C1/8C1A: 18 CLC C1/8C1B: 690300 ADC #$0003 C1/8C1E: 851A STA $1A C1/8C20: 4CFB83 JMP $83FB C1/8C23: A00000 LDY #$0000 //$F4: color C1/8C26: B71A LDA [$1A],Y C1/8C28: 29FF00 AND #$00FF C1/8C2B: C9FF00 CMP #$00FF C1/8C2E: D00B BNE $8C3B C1/8C30: E230 SEP #$30 C1/8C32: 224A8680 JSR $80864A C1/8C36: C230 REP #$30 C1/8C38: 29FF00 AND #$00FF C1/8C3B: 85D4 STA $D4 C1/8C3D: AA TAX C1/8C3E: BF909981 LDA $819990,X C1/8C42: 85FC STA $FC C1/8C44: BF929981 LDA $819992,X C1/8C48: 85FE STA $FE C1/8C4A: E61A INC $1A C1/8C4C: 4CFB83 JMP $83FB C1/8C4F: A00000 LDY #$0000 //$F5 C1/8C52: B71A LDA [$1A],Y C1/8C54: 8500 STA $00 C1/8C56: C8 INY C1/8C57: C8 INY C1/8C58: B71A LDA [$1A],Y C1/8C5A: C9FFFF CMP #$FFFF C1/8C5D: D004 BNE $8C63 C1/8C5F: 22618680 JSR $808661 C1/8C63: 8504 STA $04 C1/8C65: A97E00 LDA #$007E C1/8C68: 2404 BIT $04 C1/8C6A: 5001 BVC $8C6D C1/8C6C: 1A INC A C1/8C6D: 8502 STA $02 C1/8C6F: A505 LDA $05 C1/8C71: 291F00 AND #$001F C1/8C74: 8508 STA $08 C1/8C76: A00000 LDY #$0000 C1/8C79: 2404 BIT $04 C1/8C7B: 302C BMI $8CA9 C1/8C7D: A504 LDA $04 C1/8C7F: 293F00 AND #$003F C1/8C82: 8506 STA $06 C1/8C84: A618 LDX $18 C1/8C86: B700 LDA [$00],Y C1/8C88: 9F00807E STA $7E8000,X C1/8C8C: C8 INY C1/8C8D: C8 INY C1/8C8E: E8 INX C1/8C8F: E8 INX C1/8C90: C606 DEC $06 C1/8C92: D0F2 BNE $8C86 C1/8C94: A94000 LDA #$0040 C1/8C97: 242A BIT $2A C1/8C99: 1001 BPL $8C9C C1/8C9B: 0A ASL A C1/8C9C: 18 CLC C1/8C9D: 6516 ADC $16 C1/8C9F: 8518 STA $18 C1/8CA1: 8516 STA $16 C1/8CA3: C608 DEC $08 C1/8CA5: D0D6 BNE $8C7D C1/8CA7: 8034 BRA $8CDD C1/8CA9: A504 LDA $04 C1/8CAB: 293F00 AND #$003F C1/8CAE: 8506 STA $06 C1/8CB0: A618 LDX $18 C1/8CB2: B700 LDA [$00],Y C1/8CB4: 850A STA $0A C1/8CB6: BF00807E LDA $7E8000,X C1/8CBA: 9700 STA [$00],Y C1/8CBC: A50A LDA $0A C1/8CBE: 9F00807E STA $7E8000,X C1/8CC2: C8 INY C1/8CC3: C8 INY C1/8CC4: E8 INX C1/8CC5: E8 INX C1/8CC6: C606 DEC $06 C1/8CC8: D0E8 BNE $8CB2 C1/8CCA: A94000 LDA #$0040 C1/8CCD: 242A BIT $2A C1/8CCF: 1001 BPL $8CD2 C1/8CD1: 0A ASL A C1/8CD2: 18 CLC C1/8CD3: 6516 ADC $16 C1/8CD5: 8518 STA $18 C1/8CD7: 8516 STA $16 C1/8CD9: C608 DEC $08 C1/8CDB: D0CC BNE $8CA9 C1/8CDD: A51A LDA $1A C1/8CDF: 18 CLC C1/8CE0: 690400 ADC #$0004 C1/8CE3: 851A STA $1A C1/8CE5: 4CFB83 JMP $83FB C1/8CE8: 2428 BIT $28 //$F6 C1/8CEA: 3007 BMI $8CF3 C1/8CEC: A52A LDA $2A C1/8CEE: 29FF00 AND #$00FF C1/8CF1: 8528 STA $28 C1/8CF3: 242A BIT $2A C1/8CF5: 7012 BVS $8D09 C1/8CF7: A94000 LDA #$0040 C1/8CFA: 242A BIT $2A C1/8CFC: 1001 BPL $8CFF C1/8CFE: 0A ASL A C1/8CFF: 18 CLC C1/8D00: 6516 ADC $16 C1/8D02: 8518 STA $18 C1/8D04: 8516 STA $16 C1/8D06: 4CFB83 JMP $83FB C1/8D09: 22198A81 JSR $818A19 C1/8D0D: A516 LDA $16 C1/8D0F: 18 CLC C1/8D10: 698000 ADC #$0080 C1/8D13: 8518 STA $18 C1/8D15: 8516 STA $16 C1/8D17: 4CFB83 JMP $83FB C1/8D1A: E230 SEP #$30 //$F7 set/reset overflow $2A; set/reset negative $28 C1/8D1C: A000 LDY #$00 C1/8D1E: B71A LDA [$1A],Y C1/8D20: 852B STA $2B C1/8D22: 293F AND #$3F C1/8D24: 0A ASL A C1/8D25: 852A STA $2A C1/8D27: 8528 STA $28 C1/8D29: D00B BNE $8D36 C1/8D2B: A980 LDA #$80 C1/8D2D: 8529 STA $29 C1/8D2F: C230 REP #$30 C1/8D31: E61A INC $1A C1/8D33: 4CFB83 JMP $83FB C1/8D36: 6429 STZ $29 C1/8D38: C230 REP #$30 C1/8D3A: E61A INC $1A C1/8D3C: 4CFB83 JMP $83FB C1/8D3F: E230 SEP #$30 //$F8 C1/8D41: A000 LDY #$00 C1/8D43: B71A LDA [$1A],Y C1/8D45: 300A BMI $8D51 C1/8D47: D004 BNE $8D4D C1/8D49: 224A8680 JSR $80864A C1/8D4D: 851F STA $1F C1/8D4F: 8017 BRA $8D68 C1/8D51: 297F AND #$7F C1/8D53: D004 BNE $8D59 C1/8D55: 224A8680 JSR $80864A C1/8D59: 851E STA $1E C1/8D5B: 224A8680 JSR $80864A C1/8D5F: 851F STA $1F C1/8D61: A51E LDA $1E C1/8D63: 38 SEC C1/8D64: E51F SBC $1F C1/8D66: 851E STA $1E C1/8D68: C230 REP #$30 C1/8D6A: E61A INC $1A C1/8D6C: 4CFB83 JMP $83FB C1/8D6F: E230 SEP #$30 //$F9 save loop C1/8D71: A515 LDA $15 C1/8D73: 18 CLC C1/8D74: 6903 ADC #$03 C1/8D76: 8515 STA $15 C1/8D78: AA TAX C1/8D79: A000 LDY #$00 C1/8D7B: B71A LDA [$1A],Y C1/8D7D: D004 BNE $8D83 C1/8D7F: 224A8680 JSR $80864A C1/8D83: 9D0B0E STA $0E0B,X C1/8D86: C220 REP #$20 C1/8D88: E61A INC $1A C1/8D8A: A51A LDA $1A C1/8D8C: 9D090E STA $0E09,X C1/8D8F: C230 REP #$30 C1/8D91: 4CFB83 JMP $83FB C1/8D94: E230 SEP #$30 //$FA loop C1/8D96: A615 LDX $15 C1/8D98: F01B BEQ $8DB5 C1/8D9A: DE0B0E DEC $0E0B,X C1/8D9D: F00F BEQ $8DAE C1/8D9F: BD090E LDA $0E09,X C1/8DA2: 851A STA $1A C1/8DA4: BD0A0E LDA $0E0A,X C1/8DA7: 851B STA $1B C1/8DA9: C230 REP #$30 C1/8DAB: 4CFB83 JMP $83FB C1/8DAE: A515 LDA $15 C1/8DB0: 38 SEC C1/8DB1: E903 SBC #$03 C1/8DB3: 8515 STA $15 C1/8DB5: C230 REP #$30 C1/8DB7: 4CFB83 JMP $83FB C1/8DBA: E230 SEP #$30 //$FB C1/8DBC: A514 LDA $14 C1/8DBE: 18 CLC C1/8DBF: 6903 ADC #$03 C1/8DC1: 8514 STA $14 C1/8DC3: AA TAX C1/8DC4: A51C LDA $1C C1/8DC6: 9DFF0D STA $0DFF,X C1/8DC9: C220 REP #$20 C1/8DCB: A51A LDA $1A C1/8DCD: 18 CLC C1/8DCE: 690200 ADC #$0002 C1/8DD1: 9DFD0D STA $0DFD,X C1/8DD4: E230 SEP #$30 C1/8DD6: A000 LDY #$00 C1/8DD8: B71A LDA [$1A],Y C1/8DDA: C9FF CMP #$FF C1/8DDC: D004 BNE $8DE2 C1/8DDE: 224A8680 JSR $80864A C1/8DE2: 8500 STA $00 C1/8DE4: C8 INY C1/8DE5: B71A LDA [$1A],Y C1/8DE7: C9FF CMP #$FF C1/8DE9: D004 BNE $8DEF C1/8DEB: 224A8680 JSR $80864A C1/8DEF: 8501 STA $01 C1/8DF1: C230 REP #$30 C1/8DF3: A500 LDA $00 C1/8DF5: 3017 BMI $8E0E C1/8DF7: EB XBA C1/8DF8: 0A ASL A C1/8DF9: 18 CLC C1/8DFA: 6501 ADC $01 C1/8DFC: 29FF00 AND #$00FF C1/8DFF: AA TAX C1/8E00: BFD800C9 LDA $C900D8,X C1/8E04: 851A STA $1A C1/8E06: BFD900C9 LDA $C900D9,X C1/8E0A: 851B STA $1B C1/8E0C: 8052 BRA $8E60 C1/8E0E: C90090 CMP #$9000 C1/8E11: B032 BCS $8E45 C1/8E13: C90082 CMP #$8200 C1/8E16: B013 BCS $8E2B C1/8E18: 29FF00 AND #$00FF C1/8E1B: AA TAX C1/8E1C: BF6E8E81 LDA $818E6E,X C1/8E20: 851A STA $1A C1/8E22: BF6F8E81 LDA $818E6F,X C1/8E26: 851B STA $1B C1/8E28: 4CFB83 JMP $83FB C1/8E2B: AFEA00C9 LDA $C900EA C1/8E2F: 851A STA $1A C1/8E31: AFEB00C9 LDA $C900EB C1/8E35: 851B STA $1B C1/8E37: A500 LDA $00 C1/8E39: 29FF01 AND #$01FF C1/8E3C: 0A ASL A C1/8E3D: A8 TAY C1/8E3E: B71A LDA [$1A],Y C1/8E40: 851A STA $1A C1/8E42: 4CFB83 JMP $83FB C1/8E45: 38 SEC C1/8E46: E90090 SBC #$9000 C1/8E49: EB XBA C1/8E4A: 29FF00 AND #$00FF C1/8E4D: 38 SEC C1/8E4E: 8502 STA $02 C1/8E50: 0A ASL A C1/8E51: 6502 ADC $02 C1/8E53: AA TAX C1/8E54: BF0000E8 LDA $E80000,X C1/8E58: 851A STA $1A C1/8E5A: BF0100E8 LDA $E80001,X C1/8E5E: 851B STA $1B C1/8E60: A500 LDA $00 C1/8E62: 29FF00 AND #$00FF C1/8E65: 0A ASL A C1/8E66: A8 TAY C1/8E67: B71A LDA [$1A],Y C1/8E69: 851A STA $1A C1/8E6B: 4CFB83 JMP $83FB C1/8EA4: A00000 LDY #$0000 //$FC C1/8EA7: B71A LDA [$1A],Y C1/8EA9: 8502 STA $02 C1/8EAB: 29FF00 AND #$00FF C1/8EAE: 2401 BIT $01 C1/8EB0: 1003 BPL $8EB5 C1/8EB2: 0900FF ORA #$FF00 C1/8EB5: 242A BIT $2A C1/8EB7: 3013 BMI $8ECC C1/8EB9: 0A ASL A C1/8EBA: 8500 STA $00 C1/8EBC: A502 LDA $02 C1/8EBE: 2900FF AND #$FF00 C1/8EC1: 4A LSR A C1/8EC2: 4A LSR A C1/8EC3: 2402 BIT $02 C1/8EC5: 1014 BPL $8EDB C1/8EC7: 0900C0 ORA #$C000 C1/8ECA: 800F BRA $8EDB C1/8ECC: 8500 STA $00 C1/8ECE: A502 LDA $02 C1/8ED0: 2900FF AND #$FF00 C1/8ED3: 4A LSR A C1/8ED4: 2402 BIT $02 C1/8ED6: 1003 BPL $8EDB C1/8ED8: 090080 ORA #$8000 C1/8EDB: 18 CLC C1/8EDC: 6500 ADC $00 C1/8EDE: 18 CLC C1/8EDF: 6518 ADC $18 C1/8EE1: 8518 STA $18 C1/8EE3: 8516 STA $16 C1/8EE5: 22198A81 JSR $818A19 C1/8EE9: A51A LDA $1A C1/8EEB: 18 CLC C1/8EEC: 690200 ADC #$0002 C1/8EEF: 851A STA $1A C1/8EF1: 4CFB83 JMP $83FB C1/8EF4: A00000 LDY #$0000 //$FD C1/8EF7: B71A LDA [$1A],Y C1/8EF9: C9FFFF CMP #$FFFF C1/8EFC: D004 BNE $8F02 C1/8EFE: 22618680 JSR $808661 C1/8F02: 8502 STA $02 C1/8F04: 297F00 AND #$007F C1/8F07: 2401 BIT $01 C1/8F09: 3001 BMI $8F0C C1/8F0B: 0A ASL A C1/8F0C: 8500 STA $00 C1/8F0E: A502 LDA $02 C1/8F10: 2900FF AND #$FF00 C1/8F13: 2401 BIT $01 C1/8F15: 3001 BMI $8F18 C1/8F17: 4A LSR A C1/8F18: 4A LSR A C1/8F19: 18 CLC C1/8F1A: 6500 ADC $00 C1/8F1C: 8518 STA $18 C1/8F1E: 8516 STA $16 C1/8F20: 22198A81 JSR $818A19 C1/8F24: A51A LDA $1A C1/8F26: 18 CLC C1/8F27: 690200 ADC #$0002 C1/8F2A: 851A STA $1A C1/8F2C: 4CFB83 JMP $83FB C1/8F2F: A00000 LDY #$0000 //$FE dma parameter C1/8F32: B71A LDA [$1A],Y C1/8F34: 29FF00 AND #$00FF C1/8F37: C9FF00 CMP #$00FF C1/8F3A: F051 BEQ $8F8D C1/8F3C: 0A ASL A C1/8F3D: AA TAX C1/8F3E: BF919081 LDA $819091,X C1/8F42: 8500 STA $00 C1/8F44: E230 SEP #$30 C1/8F46: A981 LDA #$81 C1/8F48: 8502 STA $02 C1/8F4A: A000 LDY #$00 C1/8F4C: B700 LDA [$00],Y C1/8F4E: 8504 STA $04 C1/8F50: C8 INY C1/8F51: A58E LDA $8E C1/8F53: C920 CMP #$20 C1/8F55: F02F BEQ $8F86 C1/8F57: A68C LDX $8C C1/8F59: C220 REP #$20 C1/8F5B: B700 LDA [$00],Y C1/8F5D: 9D0004 STA $0400,X C1/8F60: C8 INY C1/8F61: C8 INY C1/8F62: B700 LDA [$00],Y C1/8F64: 9D0204 STA $0402,X C1/8F67: C8 INY C1/8F68: C8 INY C1/8F69: B700 LDA [$00],Y C1/8F6B: 9D0404 STA $0404,X C1/8F6E: C8 INY C1/8F6F: C8 INY C1/8F70: B700 LDA [$00],Y C1/8F72: 9D0604 STA $0406,X C1/8F75: C8 INY C1/8F76: C8 INY C1/8F77: E220 SEP #$20 C1/8F79: A58C LDA $8C C1/8F7B: 18 CLC C1/8F7C: 6908 ADC #$08 C1/8F7E: 858C STA $8C C1/8F80: E68E INC $8E C1/8F82: C604 DEC $04 C1/8F84: D0CB BNE $8F51 C1/8F86: C230 REP #$30 C1/8F88: E61A INC $1A C1/8F8A: 4CFB83 JMP $83FB C1/8F8D: 22198A81 JSR $818A19 C1/8F91: A5D0 LDA $D0 C1/8F93: C5D2 CMP $D2 C1/8F95: F008 BEQ $8F9F C1/8F97: 22258A81 JSR $818A25 C1/8F9B: A5D0 LDA $D0 C1/8F9D: 85D2 STA $D2 C1/8F9F: E61A INC $1A C1/8FA1: 4CFB83 JMP $83FB C1/8FA4: E230 SEP #$30 //$FF C1/8FA6: A514 LDA $14 C1/8FA8: F01A BEQ $8FC4 C1/8FAA: 38 SEC C1/8FAB: E903 SBC #$03 C1/8FAD: 8514 STA $14 C1/8FAF: AA TAX C1/8FB0: BD000E LDA $0E00,X C1/8FB3: 851A STA $1A C1/8FB5: BD010E LDA $0E01,X C1/8FB8: 851B STA $1B C1/8FBA: BD020E LDA $0E02,X C1/8FBD: 851C STA $1C C1/8FBF: C230 REP #$30 C1/8FC1: 4CFB83 JMP $83FB C1/8FC4: C230 REP #$30 C1/8FC6: 22198A81 JSR $818A19 C1/8FCA: A5D0 LDA $D0 C1/8FCC: C5D2 CMP $D2 C1/8FCE: F004 BEQ $8FD4 C1/8FD0: 22258A81 JSR $818A25 C1/8FD4: 6B RTL
Ý tui là ''bất khuất'' là seishin này: 不屈 https://akurasu.net/wiki/Super_Robot_Wars/30/Spirit_Commands Hay bác chưa chơi các bản sau srw4?
Dòng này chỉ chơi các bản trên Sufami thôi. Hệ máy khác thì không có chơi. Cái tinh thần "bất khuất" là dịch từ chữ ド根性. Có vẻ như mấy bản sau này bỏ mất ド根性 rồi.