プログラム後半($4500-$4fff)は、パッチ情報などのデータ部分です。
VRAMアドレスにパッチを当てます。
db c2h,07h,00h,69h,00h,72h,05h,b3h,05h,c1h,05h,cch,00h,91h,07h,8ah db c3h,05h,00h,a0h,0ah,13h,0ah,07h,0dh,dfh,0bh,8bh db c4h,01h,07h,86h db c5h,01h,05h,f2h db c6h,03h,03h,31h,05h,e8h,05h,e5h db cah,02h,03h,46h,03h,46h db cbh,01h,06h,ffh db cch,0ch,00h,f4h,00h,fah,01h,00h,0ch,ddh,0bh,c4h,0dh,46h,0dh,14h,0dh,4fh,0dh,52h,0dh,7dh,0ch,e6h,0ch,e9h db cdh,0dh,04h,1ah,0dh,17h,0dh,80h,0dh,c5h,04h,38h,02h,a2h,00h,e7h,02h,a2h,02h,a5h,02h,a5h,06h,fah,07h,30h,0ah,46h db ceh,06h,01h,d8h,01h,edh,02h,02h,0ah,4bh,0ah,5ch,0bh,d8h
サウンドポートにパッチを当てます。
db a0h,19h,00h,5dh,00h,afh,04h,6bh,04h,73h,04h,7bh,04h,83h,04h,8bh db 07h,e5h,09h,26h,09h,2eh,09h,4eh,09h,56h,09h,5dh,09h,cch,09h,fbh db 0ah,85h,0ah,99h,0ch,cch,0dh,adh,0eh,2ah,0eh,40h,0eh,48h,0eh,50h db 0eh,58h,0eh,adh db a1h,19h,00h,61h,00h,b3h,04h,6fh,04h,77h,04h,7fh db 04h,87h,04h,8eh,07h,e8h,09h,2ah,09h,32h,09h,52h,09h,59h,09h,61h db 09h,cfh,09h,ffh,0ah,88h,0ah,9dh,0ch,d0h,0dh,b0h,0eh,2fh,0eh,44h db 0eh,4ch,0eh,54h,0eh,5bh,0eh,b0h
ミサイルベーダー固有のパッチ処理($4300-$44ff)は以下になります。
org $4000 .header db 41h db 42h db 04h db 40h Attr: di ld hl, c000h ld de, c001h ld bc, 01ffh ld (hl), 20h ldir Screen: ld hl, c200h ld de, c201h ld bc, 180fh ld (hl), ffh ldir ld hl, Game1Patch dec hl ld (80fch), hl ld hl, missilevader Title: ld de, c200h ld bc, 19 ldir ld hl, color1 ld de, c240h ld bc, 19 ldir ld hl, color2 ld de, c280h ld bc, 19 ldir ld hl, color3 ld de, c2c0h ld bc, 19 ldir ld hl, color4 ld de, c300h ld bc, 19 ldir Vram: ld a, 01h out (b0h), a Ram: ld a, 66h out (06h), a ld a, 0dh out (f0h), a out (f2h), a ld a, 40h out (30h), a ; ld a, 4dh ; out (f0h), a ; ld a, 55h ; out (f2h), a Rom: ld hl, 5000h ld de, 0000h ld bc, 1000h ldir Vector: ld a, fah ld i, a Patch: ld hl, (80fch) Next: inc hl ld a, (hl) inc hl ld c, (hl) inc c Addr: dec c jr z, Value inc hl ld d, (hl) inc hl ld e, (hl) ld (de), a jr Addr Value: cp ffh jr nz, Next Select: ld hl, c000h ld de, c001h Mode: ei ld a, (80f0h) cp ffH jr nz, Keys jr Mode Keys: ld b, 84h cp 31h jr z, Run ld b, 86h cp 32h jr z, Run ld b, dch cp 33h jr z, Run ld b, deh cp 34h jr z, Run ld b, 20h jr Mode Run: ld (hl), b ld a, (hl) ld (8400h), a ld bc, 01ffh ldir jp $0000 JoyS: ld a, 01h rrca rrca or %10000000 push bc ld b, a ld a, 07h out (a0h), a in a, (a2h) ld c, a or %10000000 and %10111111 out (a1h), a ld a, 0fh out (a0h), a ld a, b out (a1h), a ld a, 0eh out (a0h), a in a, (a2h) cpl ld b, a ld a, 07h out (a0h), a ld a, c out (a1h), a ld a, b JoyB: bit 5, a jr z, JoyR ld a, 80h ld (80f8h), a JoyR: ld a, b bit 3, a jr z, JoyU ld a, 10h jr JoyE JoyU: ld a, b bit 0, a jr z, JoyD ld a, 40h jr JoyE JoyD: ld a, b bit 1, a jr z, JoyL ld a, 80h jr JoyE JoyL: bit 2,a jr z, JoyN ld a, 20h jr JoyE JoyN: ld a, 00h JoyE: ld (80f6h), a pop bc ret org $4200 Key: push af call SubCPU ld (80f0h), a pop af org $4208 ei reti SubCPU: ld a, 0ch out (93h), a Scan: in a,(92h) and 20h jr z, Scan ld a, 0dh out (93h), a in a, (90h) ret org $4270 GameKey: push af call SubCPU ld b, a ld a, (80f2h) or b ld (80f2h), a pop af ei reti org $4280 Init: ld a, (8400h) Clear: push de push bc ld hl, c000h ld de, c001h ld bc, 01ffh ld (hl), a ldir pop bc pop de ld hl, c2fah ret org $4300 Reverse: ld a, (de) and %01111111 ld (hl), a ld a, h and %11111101 ld h, a ld (hl), 21h ld a, h or %00000010 ld h, a inc hl inc de dec c jr nz, Reverse ret org $4380 ld a, 20h call Clear ei jp $05a8 org $4400 ld a, ffh ld (80f0h), a StartMode: ld a, (80f0h) cp ffH jr nz, ModeNum jr StartMode ModeNum: cp 30h jr z, RetNum cp 31h jr z, RetNum cp 32h jr z, RetNum cp 33h jr z, RetNum jp $4400 RetNum: sub 30h ret org $4430 call JoyS ld a, (80f6h) bit 4, a jp nz, $0c17 bit 5,a jp nz, $0c5f jr Cursor org $4450 call JoyS ld a, (80f8h) ld b, a ld a, 00h ld (80f8h), a ld a, b bit 7, a jp nz, $044f jp Button org $44b0 Cursor: ld a, (80f0h) Left: cp 1ch jr nz, Right ld a,ffh ld (80f0h), a jp $0c17 Right: cp 1dh ret nz ld a,ffh ld (80f0h), a jp $0c5f org $44f0 Button: ld a, (80f0h) cp 20h ret nz ld a, ffh ld (80f0h), a jp $044f org $4500 missilevader: db 'MISSILEVADER:# ' color1: db '128x96 4 COLOR #1 ' color2: db '128x96 4 COLOR #2 ' color3: db '256x192 GW MONO #3 ' color4: db '256x192 BW MONO #4 ' Game1Patch: db 00h,04h,fah,02h,fah,14h,00h,79h,00h,a4h db 08h,01h,fah,04h db 20h,01h,fah,06h db 30h,01h,01h,0eh db 42h,06h,fah,03h,fah,05h,fah,07h,fah,15h,fah,17h,00h,e9h db 43h,02h,00h,a5h,00h,49h db 44h,03h,01h,0fh,01h,2dh,00h,7ah db 50h,01h,01h,2ch db 70h,01h,fah,16h db 80h,02h,00h,48h,00h,e8h db a0h,19h,00h,5dh,00h,afh,04h,6bh,04h,73h,04h,7bh,04h,83h,04h,8bh db 07h,e5h,09h,26h,09h,2eh,09h,4eh,09h,56h,09h,5dh,09h,cch,09h,fbh db 0ah,85h,0ah,99h,0ch,cch,0dh,adh,0eh,2ah,0eh,40h,0eh,48h,0eh,50h db 0eh,58h,0eh,adh db a1h,19h,00h,61h,00h,b3h,04h,6fh,04h,77h,04h,7fh db 04h,87h,04h,8eh,07h,e8h,09h,2ah,09h,32h,09h,52h,09h,59h,09h,61h db 09h,cfh,09h,ffh,0ah,88h,0ah,9dh,0ch,d0h,0dh,b0h,0eh,2fh,0eh,44h db 0eh,4ch,0eh,54h,0eh,5bh,0eh,b0h db c2h,07h,00h,69h,00h,72h,05h,b3h,05h,c1h,05h,cch,00h,91h,07h,8ah db c3h,05h,00h,a0h,0ah,13h,0ah,07h,0dh,dfh,0bh,8bh db c4h,01h,07h,86h db c5h,01h,05h,f2h db c6h,03h,03h,31h,05h,e8h,05h,e5h db cah,02h,03h,46h,03h,46h db cbh,01h,06h,ffh db cch,0ch,00h,f4h,00h,fah,01h,00h,0ch,ddh,0bh,c4h,0dh,46h,0dh,14h,0dh,4fh,0dh,52h,0dh,7dh,0ch,e6h,0ch,e9h db cdh,0dh,04h,1ah,0dh,17h,0dh,80h,0dh,c5h,04h,38h,02h,a2h,00h,e7h,02h,a2h,02h,a5h,02h,a5h,06h,fah,07h,30h,0ah,46h db ceh,06h,01h,d8h,01h,edh,02h,02h,0ah,4bh,0ah,5ch,0bh,d8h db f0h,01h,fah,16h db fbh,01h,00h,00h db ffh,01h,80h,f0h org $4fff .footer db ffh





