diff --git a/hardware/kartusho/roms/48.rom b/hardware/kartusho/roms/48.rom new file mode 100644 index 0000000..4d6895e Binary files /dev/null and b/hardware/kartusho/roms/48.rom differ diff --git a/hardware/kartusho/roms/Backgammon.rom b/hardware/kartusho/roms/Backgammon.rom new file mode 100644 index 0000000..149fdc0 Binary files /dev/null and b/hardware/kartusho/roms/Backgammon.rom differ diff --git a/hardware/kartusho/roms/Chess.rom b/hardware/kartusho/roms/Chess.rom new file mode 100644 index 0000000..4d8ea41 Binary files /dev/null and b/hardware/kartusho/roms/Chess.rom differ diff --git a/hardware/kartusho/roms/Cookie.rom b/hardware/kartusho/roms/Cookie.rom new file mode 100644 index 0000000..8b9e20d Binary files /dev/null and b/hardware/kartusho/roms/Cookie.rom differ diff --git a/hardware/kartusho/roms/Deathchase.rom b/hardware/kartusho/roms/Deathchase.rom new file mode 100644 index 0000000..6a96ef0 Binary files /dev/null and b/hardware/kartusho/roms/Deathchase.rom differ diff --git a/hardware/kartusho/roms/Gyruss.rom b/hardware/kartusho/roms/Gyruss.rom new file mode 100644 index 0000000..8f25e73 Binary files /dev/null and b/hardware/kartusho/roms/Gyruss.rom differ diff --git a/hardware/kartusho/roms/HoraceSpiders.rom b/hardware/kartusho/roms/HoraceSpiders.rom new file mode 100644 index 0000000..1b2bf38 Binary files /dev/null and b/hardware/kartusho/roms/HoraceSpiders.rom differ diff --git a/hardware/kartusho/roms/HungryHorace.rom b/hardware/kartusho/roms/HungryHorace.rom new file mode 100644 index 0000000..e2b5947 Binary files /dev/null and b/hardware/kartusho/roms/HungryHorace.rom differ diff --git a/hardware/kartusho/roms/JetPac.rom b/hardware/kartusho/roms/JetPac.rom new file mode 100644 index 0000000..e9a96d2 Binary files /dev/null and b/hardware/kartusho/roms/JetPac.rom differ diff --git a/hardware/kartusho/roms/JetSetWilly.rom b/hardware/kartusho/roms/JetSetWilly.rom new file mode 100644 index 0000000..95b2e56 Binary files /dev/null and b/hardware/kartusho/roms/JetSetWilly.rom differ diff --git a/hardware/kartusho/roms/LalaPrologue.rom b/hardware/kartusho/roms/LalaPrologue.rom new file mode 100644 index 0000000..1075db1 Binary files /dev/null and b/hardware/kartusho/roms/LalaPrologue.rom differ diff --git a/hardware/kartusho/roms/LocoMotion.rom b/hardware/kartusho/roms/LocoMotion.rom new file mode 100644 index 0000000..7ae211a Binary files /dev/null and b/hardware/kartusho/roms/LocoMotion.rom differ diff --git a/hardware/kartusho/roms/MiscoJones.rom b/hardware/kartusho/roms/MiscoJones.rom new file mode 100644 index 0000000..0af851f Binary files /dev/null and b/hardware/kartusho/roms/MiscoJones.rom differ diff --git a/hardware/kartusho/roms/PanamaJoe.rom b/hardware/kartusho/roms/PanamaJoe.rom new file mode 100644 index 0000000..21d50ea Binary files /dev/null and b/hardware/kartusho/roms/PanamaJoe.rom differ diff --git a/hardware/kartusho/roms/Planetoids.rom b/hardware/kartusho/roms/Planetoids.rom new file mode 100644 index 0000000..0fed3a7 Binary files /dev/null and b/hardware/kartusho/roms/Planetoids.rom differ diff --git a/hardware/kartusho/roms/Popeye.rom b/hardware/kartusho/roms/Popeye.rom new file mode 100644 index 0000000..2f7c80e Binary files /dev/null and b/hardware/kartusho/roms/Popeye.rom differ diff --git a/hardware/kartusho/roms/Pssst.rom b/hardware/kartusho/roms/Pssst.rom new file mode 100644 index 0000000..8a6847d Binary files /dev/null and b/hardware/kartusho/roms/Pssst.rom differ diff --git a/hardware/kartusho/roms/QBert.rom b/hardware/kartusho/roms/QBert.rom new file mode 100644 index 0000000..2c33fd4 Binary files /dev/null and b/hardware/kartusho/roms/QBert.rom differ diff --git a/hardware/kartusho/roms/ReturnJedi.rom b/hardware/kartusho/roms/ReturnJedi.rom new file mode 100644 index 0000000..586838e Binary files /dev/null and b/hardware/kartusho/roms/ReturnJedi.rom differ diff --git a/hardware/kartusho/roms/ShadowUnicorn.rom b/hardware/kartusho/roms/ShadowUnicorn.rom new file mode 100644 index 0000000..c0b4bda Binary files /dev/null and b/hardware/kartusho/roms/ShadowUnicorn.rom differ diff --git a/hardware/kartusho/roms/SpaceRaiders.rom b/hardware/kartusho/roms/SpaceRaiders.rom new file mode 100644 index 0000000..7c797cc Binary files /dev/null and b/hardware/kartusho/roms/SpaceRaiders.rom differ diff --git a/hardware/kartusho/roms/StarWars.rom b/hardware/kartusho/roms/StarWars.rom new file mode 100644 index 0000000..5fa1786 Binary files /dev/null and b/hardware/kartusho/roms/StarWars.rom differ diff --git a/hardware/kartusho/roms/TranzAm.rom b/hardware/kartusho/roms/TranzAm.rom new file mode 100644 index 0000000..c6bc8f6 Binary files /dev/null and b/hardware/kartusho/roms/TranzAm.rom differ diff --git a/hardware/kartusho/roms/_make.bat b/hardware/kartusho/roms/_make.bat new file mode 100644 index 0000000..d7be2ce --- /dev/null +++ b/hardware/kartusho/roms/_make.bat @@ -0,0 +1,38 @@ +genMenu +rcs screen.scr screen.rcs +fcut screen.rcs 0 1800 screen.cut +zx7b screen.cut screen.cut.zx7b +sjasmplus kartusho.asm +copy /b kartusho.rom+ ^ + 48.rom+ ^ + lechesaa.rom+ ^ + sinleches.rom+ ^ + testrom.rom+ ^ + testrom48.rom+ ^ + se2.rom+ ^ + inves.rom+ ^ + seachange.rom+ ^ + gw03.rom+ ^ + JetSetWilly.rom+ ^ + Pssst.rom+ ^ + Gyruss.rom+ ^ + JetPac.rom+ ^ + Chess.rom+ ^ + Planetoids.rom+ ^ + HoraceSpiders.rom+ ^ + SpaceRaiders.rom+ ^ + TranzAm.rom+ ^ + ShadowUnicorn.rom+ ^ + HungryHorace.rom+ ^ + LocoMotion.rom+ ^ + PanamaJoe.rom+ ^ + Popeye.rom+ ^ + MiscoJones.rom+ ^ + ReturnJedi.rom+ ^ + StarWars.rom+ ^ + Deathchase.rom+ ^ + Cookie.rom+ ^ + LalaPrologue.rom+ ^ + Backgammon.rom+ ^ + QBert.rom ^ + kartusho.bin diff --git a/hardware/kartusho/roms/dzx7b_fast.asm b/hardware/kartusho/roms/dzx7b_fast.asm new file mode 100644 index 0000000..28b0505 --- /dev/null +++ b/hardware/kartusho/roms/dzx7b_fast.asm @@ -0,0 +1,49 @@ +; ----------------------------------------------------------------------------- +; ZX7 Backwards by Einar Saukas, Antonio Villena +; "Standard" version (67 bytes only) +; ----------------------------------------------------------------------------- +; Parameters: +; HL: source address (compressed data) +; DE: destination address (decompressing) +; ----------------------------------------------------------------------------- +dzx7 ld bc, $8000 + ld a, b +copyby inc c + ldd +mainlo add a, a + call z, getbit + jr nc, copyby + push de + ld d, c + defb $30 +lenval add a, a + call z, getbit + rl c + rl b + add a, a + call z, getbit + jr nc, lenval + inc c + jr z, exitdz + ld e, (hl) + dec hl + sll e + jr nc, offend + ld d, $10 +nexbit add a, a + call z, getbit + rl d + jr nc, nexbit + inc d + srl d +offend rr e + ex (sp), hl + ex de, hl + adc hl, de + lddr +exitdz pop hl + jr nc, mainlo +getbit ld a, (hl) + dec hl + adc a, a + ret \ No newline at end of file diff --git a/hardware/kartusho/roms/fcut.exe b/hardware/kartusho/roms/fcut.exe new file mode 100644 index 0000000..7316022 Binary files /dev/null and b/hardware/kartusho/roms/fcut.exe differ diff --git a/hardware/kartusho/roms/fuente6x8.bin b/hardware/kartusho/roms/fuente6x8.bin new file mode 100644 index 0000000..4acc1af Binary files /dev/null and b/hardware/kartusho/roms/fuente6x8.bin differ diff --git a/hardware/kartusho/roms/genMenu.c b/hardware/kartusho/roms/genMenu.c new file mode 100644 index 0000000..f6544a2 --- /dev/null +++ b/hardware/kartusho/roms/genMenu.c @@ -0,0 +1,50 @@ +#include +#include + +unsigned char image[0xc000], font[0x1000]; +char tmpstr[50]; +unsigned short i, j, k, pos; +FILE *fh; + +int main(int argc, char *argv[]){ + fh= fopen("fuente6x8.bin", "r"); + fread(font+0x80, 1, 0x380, fh); + fclose(fh); + for ( i= 0x400; i<0x1000; i++ ) + font[i]= (font[i-0x400] >> 2) | (font[i-0x400] << 6); + fh= fopen("menu.txt", "r"); + for ( i= 0; i<17; i++ ){ + fgets(tmpstr, 50, fh); + k= 0; + pos= i<<5&0xf0 | i<<8&0x1800; + while ( 1 ){ + for ( j= 0; j<8; j++, pos+= 0x100 ) + image[pos]= font[j|tmpstr[k]<<3]; + pos-= 0x800; + if( tmpstr[++k]<14 ) + break; + for ( j= 0; j<8; j++, pos+= 0x100 ) + image[pos]= image[pos]&0xfc | font[0xc00|j|tmpstr[k]<<3]&0x3, + image[pos+1]= font[0xc00|j|tmpstr[k]<<3]&0xfc; + pos-= 0x7ff; + if( tmpstr[++k]<14 ) + break; + for ( j= 0; j<8; j++, pos+= 0x100 ) + image[pos]= image[pos]&0xf0 | font[0x800|j|tmpstr[k]<<3]&0xf, + image[pos+1]= font[0x800|j|tmpstr[k]<<3]&0xf0; + pos-= 0x7ff; + if( tmpstr[++k]<14 ) + break; + for ( j= 0; j<8; j++, pos+= 0x100 ) + image[pos]= image[pos] | font[0x400|j|tmpstr[k]<<3]; + pos-= 0x7ff; + if( tmpstr[++k]<14 ) + break; + } + } + fclose(fh); + fh= fopen("screen.scr", "wb+"); + memset(image+0x1800, 0x38, 0x300); + fwrite(image, 1, 0x1b00, fh); + fclose(fh); +} diff --git a/hardware/kartusho/roms/genMenu.exe b/hardware/kartusho/roms/genMenu.exe new file mode 100644 index 0000000..81bcd25 Binary files /dev/null and b/hardware/kartusho/roms/genMenu.exe differ diff --git a/hardware/kartusho/roms/gw03.rom b/hardware/kartusho/roms/gw03.rom new file mode 100644 index 0000000..263da25 Binary files /dev/null and b/hardware/kartusho/roms/gw03.rom differ diff --git a/hardware/kartusho/roms/inves.rom b/hardware/kartusho/roms/inves.rom new file mode 100644 index 0000000..c195a2a Binary files /dev/null and b/hardware/kartusho/roms/inves.rom differ diff --git a/hardware/kartusho/roms/kartusho.asm b/hardware/kartusho/roms/kartusho.asm new file mode 100644 index 0000000..c63b850 --- /dev/null +++ b/hardware/kartusho/roms/kartusho.asm @@ -0,0 +1,1357 @@ + OUTPUT kartusho.rom + define codcnt $7800 + include version.asm + + di + im 1 + ld sp, $8000 + ld hl, $5800 + ld de, $5801 + ld (hl), e + ld bc, $0020 + ldir + ld (hl), $47 + ld bc, $03fe + out (c), h + ldir + ld hl, manic-1 + push hl + ld d, $77 + call dzx7b + inc l + inc hl + ld b, $40 +start3 ld a, b + xor c + and $f8 + xor c + ld d, a + xor b + xor c + rlca + rlca + ld e, a + inc bc + ldi + jr cont + +; ---------------------- +; THE 'KEYBOARD' ROUTINE +; ---------------------- +rst38 push af + push bc + push hl + ld hl, keytab-5 + ld bc, $fefe +keyscn in a, (c) + cpl + and $1f + set 5, a + dec hl +keysc1 inc hl + rrca + jr nc, keysc1 + jr nz, keysc5 + rlc b + jr c, keyscn +keysc5 ld a, (hl) + or a +keysc6 ld hl, (codcnt) + jr z, keysc8 + res 7, l + cp l + jr nz, keysc7 + dec h + jr nz, keysc9 + ld h, 3 + defb $c2 +keysc7 ld h, 32 + or $80 +keysc8 ld l, a +keysc9 ld (codcnt), hl + ei + pop hl + pop bc + pop af + ret + +cont inc bc + ld a, b + cp $58 + jr nz, start3 + IF version=1 + ld d, codcnt-1>>8 + push de + ELSE + ld hl, game3 + ld d, (hl) + push de + ld b, h + ldir + ENDIF + ld l, c + ld bc, $f7fe + call direc + ld b, $ef + call c, inver + ld b, $fb + call c, direc + ld b, $df + call c, inver + ld b, $fd + call c, direc + ld b, $bf + call c, inver + ld b, c + dec l + jr nc, game1 + in a, (c) + rrca + ld b, 3 +cont1 rrca + jr nc, gamen + inc l + djnz cont1 + ld l, e + IF version=1 + inc d + ENDIF + ei + +games call SELEC + ld bc, games + push bc +waitky ld a, (de) + sub $80 + jr c, waitky + ld (de), a + cp $0d + jr z, gamen + cp $20 + jr z, gamen + call SELEC + ld a, (de) + sub '5' + jr z, gamlf + dec a + jr z, gamdw + dec a + jr z, gamup + dec a + jr z, gamrh + sub 'a'-'8' + jr z, gamdw + sub 'o'-'a' + jr z, gamlf + dec a + jr z, gamrh + dec a + ret nz +gamup dec l + ret p +gamdw inc l + ld a, l + cp 32 + ret c + dec l + ret +gamlf ld a, l + ld l, e + sub 16 + ret c + ld l, a + ret +gamrh ld a, l + cp 16 + jr c, gamrh1 + ld a, 15 +gamrh1 add a, 16 + ld l, a + ret +gamen pop af +game1 ld a, l + IF version=1 + ld hl, $c777 + and $1f + jr nz, game2 + inc h + inc h +game2 ld ($7700), hl + ld h, a + or $80 + ELSE + ld l, $c9 + and $1f + jr nz, game2 + ld ($770b), hl +game2 rlca + ld hl, $3ffc + rlca + rlca + ld b, 5 + ENDIF + ret + +keytab defb $61, $73, $64, $66, $67 ; a s d f g + defb $71, $77, $65, $72, $74 ; q w e r t + defb $31, $32, $33, $34, $35 ; 1 2 3 4 5 + defb $30, $39, $38, $37, $36 ; 0 9 8 7 6 + defb $70, $6f, $69, $75, $79 ; p o i u y + defb $0d, $6c, $6b, $6a, $68 ; Enter l k j h + defb $20 + +inver in a, (c) + ld b, 5 +inver1 nop + rrca + rl e + djnz inver1 + ld a, e + defb $da +direc in a, (c) + ld e, 6 +direc2 dec e + ret z + inc l + rrca + jr c, direc2 + ret + + IF version=0 +game3 ld (hl), a + rlca + res 0, l + jr nc, game4 + inc l +game4 djnz game3 + set 1, l + ld (hl), a + rst 0 + ENDIF + +SELEC push hl + exx + pop hl + inc l + ld a, l + cp 17 + ld de, 0 + ld b, 16 + jr c, sel01 + ld e, -16 + add hl, de + ld e, b +sel01 add hl, hl + add hl, hl + add hl, hl + ld h, $16 + add hl, hl + add hl, hl + add hl, de +sel02 ld a, (hl) + xor %00111111 + ld (hl), a + inc l + djnz sel02 + exx + ld a, l + exx +sel03 sub 16 + jr nc, sel03 + add a, 17 + ld c, a + and %00011000 + or %01000000 + ld d, a + ld a, c + and %00000111 + rrca + rrca + rrca + add a, $0f + ld e, a + ld b, 8 +sel04 ld a, (de) + xor 3 + ld (de), a + inc d + djnz sel04 + exx + ret + + incbin screen.cut.zx7b + +manic + IF version=0 + ld (hl), a + ENDIF + ld de, $ffff + ld hl, endman-1 + ld bc, $8400 + push bc + +dzx7b include dzx7b_fast.asm + incbin manic.cut.zx7b +endman block $3d00-$, $ff + +; ------------------------------- +; THE 'ZX SPECTRUM CHARACTER SET' +; ------------------------------- + +;; char-set + +; $20 - Character: ' ' CHR$(32) + +L3D00: DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + +; $21 - Character: '!' CHR$(33) + + DEFB %00000000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + DEFB %00010000 + DEFB %00000000 + +; $22 - Character: '"' CHR$(34) + + DEFB %00000000 + DEFB %00100100 + DEFB %00100100 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + +; $23 - Character: '#' CHR$(35) + + DEFB %00000000 + DEFB %00100100 + DEFB %01111110 + DEFB %00100100 + DEFB %00100100 + DEFB %01111110 + DEFB %00100100 + DEFB %00000000 + +; $24 - Character: '$' CHR$(36) + + DEFB %00000000 + DEFB %00001000 + DEFB %00111110 + DEFB %00101000 + DEFB %00111110 + DEFB %00001010 + DEFB %00111110 + DEFB %00001000 + +; $25 - Character: '%' CHR$(37) + + DEFB %00000000 + DEFB %01100010 + DEFB %01100100 + DEFB %00001000 + DEFB %00010000 + DEFB %00100110 + DEFB %01000110 + DEFB %00000000 + +; $26 - Character: '&' CHR$(38) + + DEFB %00000000 + DEFB %00010000 + DEFB %00101000 + DEFB %00010000 + DEFB %00101010 + DEFB %01000100 + DEFB %00111010 + DEFB %00000000 + +; $27 - Character: ''' CHR$(39) + + DEFB %00000000 + DEFB %00001000 + DEFB %00010000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + +; $28 - Character: '(' CHR$(40) + + DEFB %00000000 + DEFB %00000100 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00000100 + DEFB %00000000 + +; $29 - Character: ')' CHR$(41) + + DEFB %00000000 + DEFB %00100000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00100000 + DEFB %00000000 + +; $2A - Character: '*' CHR$(42) + + DEFB %00000000 + DEFB %00000000 + DEFB %00010100 + DEFB %00001000 + DEFB %00111110 + DEFB %00001000 + DEFB %00010100 + DEFB %00000000 + +; $2B - Character: '+' CHR$(43) + + DEFB %00000000 + DEFB %00000000 + DEFB %00001000 + DEFB %00001000 + DEFB %00111110 + DEFB %00001000 + DEFB %00001000 + DEFB %00000000 + +; $2C - Character: ',' CHR$(44) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00001000 + DEFB %00001000 + DEFB %00010000 + +; $2D - Character: '-' CHR$(45) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00111110 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + +; $2E - Character: '.' CHR$(46) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00011000 + DEFB %00011000 + DEFB %00000000 + +; $2F - Character: '/' CHR$(47) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000010 + DEFB %00000100 + DEFB %00001000 + DEFB %00010000 + DEFB %00100000 + DEFB %00000000 + +; $30 - Character: '0' CHR$(48) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000110 + DEFB %01001010 + DEFB %01010010 + DEFB %01100010 + DEFB %00111100 + DEFB %00000000 + +; $31 - Character: '1' CHR$(49) + + DEFB %00000000 + DEFB %00011000 + DEFB %00101000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00111110 + DEFB %00000000 + +; $32 - Character: '2' CHR$(50) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %00000010 + DEFB %00111100 + DEFB %01000000 + DEFB %01111110 + DEFB %00000000 + +; $33 - Character: '3' CHR$(51) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %00001100 + DEFB %00000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $34 - Character: '4' CHR$(52) + + DEFB %00000000 + DEFB %00001000 + DEFB %00011000 + DEFB %00101000 + DEFB %01001000 + DEFB %01111110 + DEFB %00001000 + DEFB %00000000 + +; $35 - Character: '5' CHR$(53) + + DEFB %00000000 + DEFB %01111110 + DEFB %01000000 + DEFB %01111100 + DEFB %00000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $36 - Character: '6' CHR$(54) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000000 + DEFB %01111100 + DEFB %01000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $37 - Character: '7' CHR$(55) + + DEFB %00000000 + DEFB %01111110 + DEFB %00000010 + DEFB %00000100 + DEFB %00001000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + +; $38 - Character: '8' CHR$(56) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %00111100 + DEFB %01000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $39 - Character: '9' CHR$(57) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000010 + DEFB %00111110 + DEFB %00000010 + DEFB %00111100 + DEFB %00000000 + +; $3A - Character: ':' CHR$(58) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00010000 + DEFB %00000000 + DEFB %00000000 + DEFB %00010000 + DEFB %00000000 + +; $3B - Character: ';' CHR$(59) + + DEFB %00000000 + DEFB %00000000 + DEFB %00010000 + DEFB %00000000 + DEFB %00000000 + DEFB %00010000 + DEFB %00010000 + DEFB %00100000 + +; $3C - Character: '<' CHR$(60) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000100 + DEFB %00001000 + DEFB %00010000 + DEFB %00001000 + DEFB %00000100 + DEFB %00000000 + +; $3D - Character: '=' CHR$(61) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00111110 + DEFB %00000000 + DEFB %00111110 + DEFB %00000000 + DEFB %00000000 + +; $3E - Character: '>' CHR$(62) + + DEFB %00000000 + DEFB %00000000 + DEFB %00010000 + DEFB %00001000 + DEFB %00000100 + DEFB %00001000 + DEFB %00010000 + DEFB %00000000 + +; $3F - Character: '?' CHR$(63) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %00000100 + DEFB %00001000 + DEFB %00000000 + DEFB %00001000 + DEFB %00000000 + +; $40 - Character: '@' CHR$(64) + + DEFB %00000000 + DEFB %00111100 + DEFB %01001010 + DEFB %01010110 + DEFB %01011110 + DEFB %01000000 + DEFB %00111100 + DEFB %00000000 + +; $41 - Character: 'A' CHR$(65) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01111110 + DEFB %01000010 + DEFB %01000010 + DEFB %00000000 + +; $42 - Character: 'B' CHR$(66) + + DEFB %00000000 + DEFB %01111100 + DEFB %01000010 + DEFB %01111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01111100 + DEFB %00000000 + +; $43 - Character: 'C' CHR$(67) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000000 + DEFB %01000000 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $44 - Character: 'D' CHR$(68) + + DEFB %00000000 + DEFB %01111000 + DEFB %01000100 + DEFB %01000010 + DEFB %01000010 + DEFB %01000100 + DEFB %01111000 + DEFB %00000000 + +; $45 - Character: 'E' CHR$(69) + + DEFB %00000000 + DEFB %01111110 + DEFB %01000000 + DEFB %01111100 + DEFB %01000000 + DEFB %01000000 + DEFB %01111110 + DEFB %00000000 + +; $46 - Character: 'F' CHR$(70) + + DEFB %00000000 + DEFB %01111110 + DEFB %01000000 + DEFB %01111100 + DEFB %01000000 + DEFB %01000000 + DEFB %01000000 + DEFB %00000000 + +; $47 - Character: 'G' CHR$(71) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000000 + DEFB %01001110 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $48 - Character: 'H' CHR$(72) + + DEFB %00000000 + DEFB %01000010 + DEFB %01000010 + DEFB %01111110 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00000000 + +; $49 - Character: 'I' CHR$(73) + + DEFB %00000000 + DEFB %00111110 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00111110 + DEFB %00000000 + +; $4A - Character: 'J' CHR$(74) + + DEFB %00000000 + DEFB %00000010 + DEFB %00000010 + DEFB %00000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $4B - Character: 'K' CHR$(75) + + DEFB %00000000 + DEFB %01000100 + DEFB %01001000 + DEFB %01110000 + DEFB %01001000 + DEFB %01000100 + DEFB %01000010 + DEFB %00000000 + +; $4C - Character: 'L' CHR$(76) + + DEFB %00000000 + DEFB %01000000 + DEFB %01000000 + DEFB %01000000 + DEFB %01000000 + DEFB %01000000 + DEFB %01111110 + DEFB %00000000 + +; $4D - Character: 'M' CHR$(77) + + DEFB %00000000 + DEFB %01000010 + DEFB %01100110 + DEFB %01011010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00000000 + +; $4E - Character: 'N' CHR$(78) + + DEFB %00000000 + DEFB %01000010 + DEFB %01100010 + DEFB %01010010 + DEFB %01001010 + DEFB %01000110 + DEFB %01000010 + DEFB %00000000 + +; $4F - Character: 'O' CHR$(79) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $50 - Character: 'P' CHR$(80) + + DEFB %00000000 + DEFB %01111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01111100 + DEFB %01000000 + DEFB %01000000 + DEFB %00000000 + +; $51 - Character: 'Q' CHR$(81) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01010010 + DEFB %01001010 + DEFB %00111100 + DEFB %00000000 + +; $52 - Character: 'R' CHR$(82) + + DEFB %00000000 + DEFB %01111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01111100 + DEFB %01000100 + DEFB %01000010 + DEFB %00000000 + +; $53 - Character: 'S' CHR$(83) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000000 + DEFB %00111100 + DEFB %00000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $54 - Character: 'T' CHR$(84) + + DEFB %00000000 + DEFB %11111110 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + +; $55 - Character: 'U' CHR$(85) + + DEFB %00000000 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $56 - Character: 'V' CHR$(86) + + DEFB %00000000 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00100100 + DEFB %00011000 + DEFB %00000000 + +; $57 - Character: 'W' CHR$(87) + + DEFB %00000000 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01011010 + DEFB %00100100 + DEFB %00000000 + +; $58 - Character: 'X' CHR$(88) + + DEFB %00000000 + DEFB %01000010 + DEFB %00100100 + DEFB %00011000 + DEFB %00011000 + DEFB %00100100 + DEFB %01000010 + DEFB %00000000 + +; $59 - Character: 'Y' CHR$(89) + + DEFB %00000000 + DEFB %10000010 + DEFB %01000100 + DEFB %00101000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + +; $5A - Character: 'Z' CHR$(90) + + DEFB %00000000 + DEFB %01111110 + DEFB %00000100 + DEFB %00001000 + DEFB %00010000 + DEFB %00100000 + DEFB %01111110 + DEFB %00000000 + +; $5B - Character: '[' CHR$(91) + + DEFB %00000000 + DEFB %00001110 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001110 + DEFB %00000000 + +; $5C - Character: '\' CHR$(92) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000000 + DEFB %00100000 + DEFB %00010000 + DEFB %00001000 + DEFB %00000100 + DEFB %00000000 + +; $5D - Character: ']' CHR$(93) + + DEFB %00000000 + DEFB %01110000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %01110000 + DEFB %00000000 + +; $5E - Character: '^' CHR$(94) + + DEFB %00000000 + DEFB %00010000 + DEFB %00111000 + DEFB %01010100 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + +; $5F - Character: '_' CHR$(95) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %11111111 + +; $60 - Character: ' £ ' CHR$(96) + + DEFB %00000000 + DEFB %00011100 + DEFB %00100010 + DEFB %01111000 + DEFB %00100000 + DEFB %00100000 + DEFB %01111110 + DEFB %00000000 + +; $61 - Character: 'a' CHR$(97) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111000 + DEFB %00000100 + DEFB %00111100 + DEFB %01000100 + DEFB %00111100 + DEFB %00000000 + +; $62 - Character: 'b' CHR$(98) + + DEFB %00000000 + DEFB %00100000 + DEFB %00100000 + DEFB %00111100 + DEFB %00100010 + DEFB %00100010 + DEFB %00111100 + DEFB %00000000 + +; $63 - Character: 'c' CHR$(99) + + DEFB %00000000 + DEFB %00000000 + DEFB %00011100 + DEFB %00100000 + DEFB %00100000 + DEFB %00100000 + DEFB %00011100 + DEFB %00000000 + +; $64 - Character: 'd' CHR$(100) + + DEFB %00000000 + DEFB %00000100 + DEFB %00000100 + DEFB %00111100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111100 + DEFB %00000000 + +; $65 - Character: 'e' CHR$(101) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111000 + DEFB %01000100 + DEFB %01111000 + DEFB %01000000 + DEFB %00111100 + DEFB %00000000 + +; $66 - Character: 'f' CHR$(102) + + DEFB %00000000 + DEFB %00001100 + DEFB %00010000 + DEFB %00011000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + +; $67 - Character: 'g' CHR$(103) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111100 + DEFB %00000100 + DEFB %00111000 + +; $68 - Character: 'h' CHR$(104) + + DEFB %00000000 + DEFB %01000000 + DEFB %01000000 + DEFB %01111000 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %00000000 + +; $69 - Character: 'i' CHR$(105) + + DEFB %00000000 + DEFB %00010000 + DEFB %00000000 + DEFB %00110000 + DEFB %00010000 + DEFB %00010000 + DEFB %00111000 + DEFB %00000000 + +; $6A - Character: 'j' CHR$(106) + + DEFB %00000000 + DEFB %00000100 + DEFB %00000000 + DEFB %00000100 + DEFB %00000100 + DEFB %00000100 + DEFB %00100100 + DEFB %00011000 + +; $6B - Character: 'k' CHR$(107) + + DEFB %00000000 + DEFB %00100000 + DEFB %00101000 + DEFB %00110000 + DEFB %00110000 + DEFB %00101000 + DEFB %00100100 + DEFB %00000000 + +; $6C - Character: 'l' CHR$(108) + + DEFB %00000000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00001100 + DEFB %00000000 + +; $6D - Character: 'm' CHR$(109) + + DEFB %00000000 + DEFB %00000000 + DEFB %01101000 + DEFB %01010100 + DEFB %01010100 + DEFB %01010100 + DEFB %01010100 + DEFB %00000000 + +; $6E - Character: 'n' CHR$(110) + + DEFB %00000000 + DEFB %00000000 + DEFB %01111000 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %00000000 + +; $6F - Character: 'o' CHR$(111) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111000 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111000 + DEFB %00000000 + +; $70 - Character: 'p' CHR$(112) + + DEFB %00000000 + DEFB %00000000 + DEFB %01111000 + DEFB %01000100 + DEFB %01000100 + DEFB %01111000 + DEFB %01000000 + DEFB %01000000 + +; $71 - Character: 'q' CHR$(113) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111100 + DEFB %00000100 + DEFB %00000110 + +; $72 - Character: 'r' CHR$(114) + + DEFB %00000000 + DEFB %00000000 + DEFB %00011100 + DEFB %00100000 + DEFB %00100000 + DEFB %00100000 + DEFB %00100000 + DEFB %00000000 + +; $73 - Character: 's' CHR$(115) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111000 + DEFB %01000000 + DEFB %00111000 + DEFB %00000100 + DEFB %01111000 + DEFB %00000000 + +; $74 - Character: 't' CHR$(116) + + DEFB %00000000 + DEFB %00010000 + DEFB %00111000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00001100 + DEFB %00000000 + +; $75 - Character: 'u' CHR$(117) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111000 + DEFB %00000000 + +; $76 - Character: 'v' CHR$(118) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000100 + DEFB %01000100 + DEFB %00101000 + DEFB %00101000 + DEFB %00010000 + DEFB %00000000 + +; $77 - Character: 'w' CHR$(119) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000100 + DEFB %01010100 + DEFB %01010100 + DEFB %01010100 + DEFB %00101000 + DEFB %00000000 + +; $78 - Character: 'x' CHR$(120) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000100 + DEFB %00101000 + DEFB %00010000 + DEFB %00101000 + DEFB %01000100 + DEFB %00000000 + +; $79 - Character: 'y' CHR$(121) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111100 + DEFB %00000100 + DEFB %00111000 + +; $7A - Character: 'z' CHR$(122) + + DEFB %00000000 + DEFB %00000000 + DEFB %01111100 + DEFB %00001000 + DEFB %00010000 + DEFB %00100000 + DEFB %01111100 + DEFB %00000000 + +; $7B - Character: '{' CHR$(123) + + DEFB %00000000 + DEFB %00001110 + DEFB %00001000 + DEFB %00110000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001110 + DEFB %00000000 + +; $7C - Character: '|' CHR$(124) + + DEFB %00000000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00000000 + +; $7D - Character: '}' CHR$(125) + + DEFB %00000000 + DEFB %01110000 + DEFB %00010000 + DEFB %00001100 + DEFB %00010000 + DEFB %00010000 + DEFB %01110000 + DEFB %00000000 + +; $7E - Character: '~' CHR$(126) + + DEFB %00000000 + DEFB %00010100 + DEFB %00101000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + +; $7F - Character: ' © ' CHR$(127) + + DEFB %00111100 + DEFB %01000010 + DEFB %10011001 + DEFB %10100001 + DEFB %10100001 + DEFB %10011001 + DEFB %01000010 + DEFB %00111100 diff --git a/hardware/kartusho/roms/kartusho4.rom b/hardware/kartusho/roms/kartusho4.rom new file mode 100644 index 0000000..ecea86d Binary files /dev/null and b/hardware/kartusho/roms/kartusho4.rom differ diff --git a/hardware/kartusho/roms/kartushoROM.rom b/hardware/kartusho/roms/kartushoROM.rom new file mode 100644 index 0000000..c4c98ed Binary files /dev/null and b/hardware/kartusho/roms/kartushoROM.rom differ diff --git a/hardware/kartusho/roms/lechesaa.rom b/hardware/kartusho/roms/lechesaa.rom new file mode 100644 index 0000000..d369bc7 Binary files /dev/null and b/hardware/kartusho/roms/lechesaa.rom differ diff --git a/hardware/kartusho/roms/make.bat b/hardware/kartusho/roms/make.bat new file mode 100644 index 0000000..c2610fa --- /dev/null +++ b/hardware/kartusho/roms/make.bat @@ -0,0 +1,6 @@ +echo define version 0 > version.asm +call _make.bat +copy /y kartusho.bin kartusho4.rom +echo define version 1 > version.asm +call _make.bat +copy /y kartusho.bin kartushoROM.rom diff --git a/hardware/kartusho/roms/manic.cut.zx7b b/hardware/kartusho/roms/manic.cut.zx7b new file mode 100644 index 0000000..a8a6642 Binary files /dev/null and b/hardware/kartusho/roms/manic.cut.zx7b differ diff --git a/hardware/kartusho/roms/manic.scr.zx7b b/hardware/kartusho/roms/manic.scr.zx7b new file mode 100644 index 0000000..9817035 Binary files /dev/null and b/hardware/kartusho/roms/manic.scr.zx7b differ diff --git a/hardware/kartusho/roms/menu.txt b/hardware/kartusho/roms/menu.txt new file mode 100644 index 0000000..91c5915 --- /dev/null +++ b/hardware/kartusho/roms/menu.txt @@ -0,0 +1,17 @@ +GAME SELECTION MENU by AntonioVillena 2017 +1.Manic Miner U.Horace & Spiders +2.Original 48 ROM I.Space Raiders +3.Cargando Leches O.Tranz Am +4.R&Play no tokens P.Shadow of Unicorn +5.Alford ROM Test A.Hungry Horace +6.McLeod ROM Test S.Loco Motion +7.SE Basic IV 4.0 D.Montezuma's Revenge +8.Inves Spectrum+ F.Popeye +9.Sea Change ROM G.Misco Jones +0.Gosh Wonderful H.Return of the Jedi +Q.Jet Set Willy J.Star Wars +W.Pssst K.Death Chase +E.Gyrus L.Cookie +R.Jet Pac Z.Lala Prologue +T.Chess X.Backgammon +Y.Planetoids C.QBert diff --git a/hardware/kartusho/roms/rcs.exe b/hardware/kartusho/roms/rcs.exe new file mode 100644 index 0000000..32b3dbb Binary files /dev/null and b/hardware/kartusho/roms/rcs.exe differ diff --git a/hardware/kartusho/roms/se2.rom b/hardware/kartusho/roms/se2.rom new file mode 100644 index 0000000..ddfd506 Binary files /dev/null and b/hardware/kartusho/roms/se2.rom differ diff --git a/hardware/kartusho/roms/seachange.rom b/hardware/kartusho/roms/seachange.rom new file mode 100644 index 0000000..034778b Binary files /dev/null and b/hardware/kartusho/roms/seachange.rom differ diff --git a/hardware/kartusho/roms/sinleches.rom b/hardware/kartusho/roms/sinleches.rom new file mode 100644 index 0000000..ef0b86d Binary files /dev/null and b/hardware/kartusho/roms/sinleches.rom differ diff --git a/hardware/kartusho/roms/sjasmplus.exe b/hardware/kartusho/roms/sjasmplus.exe new file mode 100644 index 0000000..a69ce5b Binary files /dev/null and b/hardware/kartusho/roms/sjasmplus.exe differ diff --git a/hardware/kartusho/roms/testrom.rom b/hardware/kartusho/roms/testrom.rom new file mode 100644 index 0000000..10394dc Binary files /dev/null and b/hardware/kartusho/roms/testrom.rom differ diff --git a/hardware/kartusho/roms/testrom48.rom b/hardware/kartusho/roms/testrom48.rom new file mode 100644 index 0000000..4beb359 Binary files /dev/null and b/hardware/kartusho/roms/testrom48.rom differ diff --git a/hardware/kartusho/roms/zx7b.exe b/hardware/kartusho/roms/zx7b.exe new file mode 100644 index 0000000..be47c4e Binary files /dev/null and b/hardware/kartusho/roms/zx7b.exe differ diff --git a/hardware/kartusho/snapshots/compress.bat b/hardware/kartusho/snapshots/compress.bat new file mode 100644 index 0000000..b03aeee --- /dev/null +++ b/hardware/kartusho/snapshots/compress.bat @@ -0,0 +1,46 @@ +@echo off +SETLOCAL +if "%1"=="" goto Help +set _method=%1 +set _forw=0 +if f==%_method:~0,1% set _forw=1 +if -==%_method:~2,1% set _lit=-c + +:Loop +if "%3"=="" goto Continue +if 1==%_forw% ( + echo. + echo ^>^> exomizer raw %3 %_lit% -o %3.exo + echo. + exomizer raw %3 %_lit% -o %3.exo +) else ( + echo. + echo ^>^> exomizer raw %3 %_lit% -b -r -o %3.exo + echo. + exomizer raw %3 %_lit% -b -r -o %3.exo +) +set _result=%_result% %3.exo +shift /3 +goto Loop + +:Help +echo. +echo compress plain files with exomizer and exoopt, same syntax as exoopt +echo. +echo compress ^ ^ ^ ^ .. ^ +echo. +echo ^ Target decruncher +echo ^ Hexadecimal address for the temporal 156 bytes table +echo ^ Origin files +echo. +echo A dash after ^ (without space) forces the -c command in exomizer +goto :eof + +:Continue +echo. +echo ^>^> exoopt %_method:~0,2% %2 %_result% +exoopt %_method:~0,2% %2 %_result% +echo. +echo ^>^> del %_result% +del %_result% +ENDLOCAL \ No newline at end of file diff --git a/hardware/kartusho/snapshots/d.asm b/hardware/kartusho/snapshots/d.asm new file mode 100644 index 0000000..8bca34c --- /dev/null +++ b/hardware/kartusho/snapshots/d.asm @@ -0,0 +1,82 @@ +; b1 [f0..87] nolit= 148 bytes + ld iy, 23408 + ld a, 128 + ld b, 52 + push de + cp a +exinit: ld c, 16 + jr nz, exget4 + ld de, 1 + ld ixl, c +exget4: add a, a + call z, exgetb + rl c + jr nc, exget4 + ld (iy-112), c + push hl + ld hl, 1 + defb 210 +exsetb: add hl, hl + dec c + jr nz, exsetb + ld (iy-60), e + ld (iy-8), d + add hl, de + ex de, hl + inc iyl + pop hl + dec ixl + djnz exinit + pop de +exlit: ldd +exloop: add a, a + call z, exgetb + jr c, exlit + ld c, 111 +exgeti: add a, a + call z, exgetb +exgbic: inc c + jr c, exgeti + ret m + push de + ld iyl, c + call expair + push de + ld bc, 672 + dec e + jr z, exgoit + dec e + ld bc, 1168 + jr z, exgoit + ld c, 128 +exgoit: call exgbts + ld iyl, c + add iy, de + call expair + pop bc + ex (sp), hl + ex de, hl + add hl, de + lddr + pop hl + jr exloop +expair: ld b, (iy-112) + call exgbts + ex de, hl + ld c, (iy-60) + ld b, (iy-8) + add hl, bc + ex de, hl + ret +exgbts: ld de, 0 +excont: dec b + ret m + add a, a + call z, exgetb + rl e + rl d + jr excont +exgetb: ld a, (hl) + dec hl + adc a, a + ret diff --git a/hardware/kartusho/snapshots/define.asm b/hardware/kartusho/snapshots/define.asm new file mode 100644 index 0000000..1a0d120 --- /dev/null +++ b/hardware/kartusho/snapshots/define.asm @@ -0,0 +1,2 @@ + define LREG 61 + define LOFF 32 diff --git a/hardware/kartusho/snapshots/exomizer.exe b/hardware/kartusho/snapshots/exomizer.exe new file mode 100644 index 0000000..b68d5e3 Binary files /dev/null and b/hardware/kartusho/snapshots/exomizer.exe differ diff --git a/hardware/kartusho/snapshots/exoopt.exe b/hardware/kartusho/snapshots/exoopt.exe new file mode 100644 index 0000000..4129bed Binary files /dev/null and b/hardware/kartusho/snapshots/exoopt.exe differ diff --git a/hardware/kartusho/snapshots/fcut.exe b/hardware/kartusho/snapshots/fcut.exe new file mode 100644 index 0000000..7316022 Binary files /dev/null and b/hardware/kartusho/snapshots/fcut.exe differ diff --git a/hardware/kartusho/snapshots/flash.rom b/hardware/kartusho/snapshots/flash.rom new file mode 100644 index 0000000..dd423a9 Binary files /dev/null and b/hardware/kartusho/snapshots/flash.rom differ diff --git a/hardware/kartusho/snapshots/fuente6x8.bin b/hardware/kartusho/snapshots/fuente6x8.bin new file mode 100644 index 0000000..4acc1af Binary files /dev/null and b/hardware/kartusho/snapshots/fuente6x8.bin differ diff --git a/hardware/kartusho/snapshots/game0.sna b/hardware/kartusho/snapshots/game0.sna new file mode 100644 index 0000000..9dbce94 Binary files /dev/null and b/hardware/kartusho/snapshots/game0.sna differ diff --git a/hardware/kartusho/snapshots/game1.sna b/hardware/kartusho/snapshots/game1.sna new file mode 100644 index 0000000..39f0fbf Binary files /dev/null and b/hardware/kartusho/snapshots/game1.sna differ diff --git a/hardware/kartusho/snapshots/game2.sna b/hardware/kartusho/snapshots/game2.sna new file mode 100644 index 0000000..fd62bce Binary files /dev/null and b/hardware/kartusho/snapshots/game2.sna differ diff --git a/hardware/kartusho/snapshots/game3.sna b/hardware/kartusho/snapshots/game3.sna new file mode 100644 index 0000000..3f4d0d8 Binary files /dev/null and b/hardware/kartusho/snapshots/game3.sna differ diff --git a/hardware/kartusho/snapshots/game4.sna b/hardware/kartusho/snapshots/game4.sna new file mode 100644 index 0000000..a8fd895 Binary files /dev/null and b/hardware/kartusho/snapshots/game4.sna differ diff --git a/hardware/kartusho/snapshots/game5.sna b/hardware/kartusho/snapshots/game5.sna new file mode 100644 index 0000000..9efcfec Binary files /dev/null and b/hardware/kartusho/snapshots/game5.sna differ diff --git a/hardware/kartusho/snapshots/game6.sna b/hardware/kartusho/snapshots/game6.sna new file mode 100644 index 0000000..810f77b Binary files /dev/null and b/hardware/kartusho/snapshots/game6.sna differ diff --git a/hardware/kartusho/snapshots/game7.sna b/hardware/kartusho/snapshots/game7.sna new file mode 100644 index 0000000..d05fe9e Binary files /dev/null and b/hardware/kartusho/snapshots/game7.sna differ diff --git a/hardware/kartusho/snapshots/game8.sna b/hardware/kartusho/snapshots/game8.sna new file mode 100644 index 0000000..2fc9d42 Binary files /dev/null and b/hardware/kartusho/snapshots/game8.sna differ diff --git a/hardware/kartusho/snapshots/game9.sna b/hardware/kartusho/snapshots/game9.sna new file mode 100644 index 0000000..d074b03 Binary files /dev/null and b/hardware/kartusho/snapshots/game9.sna differ diff --git a/hardware/kartusho/snapshots/genFlash.asm b/hardware/kartusho/snapshots/genFlash.asm new file mode 100644 index 0000000..dc3d84f --- /dev/null +++ b/hardware/kartusho/snapshots/genFlash.asm @@ -0,0 +1,1369 @@ + OUTPUT flash.rom + define codcnt $7800 + include define.asm + + di + im 1 + ld sp, game3-snaps + ld hl, $5000 + ld de, $5001 + IF LREG=35 + jr start2 +start1 ld a, $9f + ld (0), a +start2 ld (hl), l + ELSE + ld (hl), l + jr start2 + nop + nop +start1 ld ($3fff), a +start2 + ENDIF + ld bc, $0800 + ldir + ld bc, $07fe + out (c), b + ld (hl), $38 + ldir + ld hl, manic-1 + ld d, $6f + call deexo + ex de, hl + inc hl + ld bc, $4000 +start3 ld a, b + xor c + and $f8 + xor c + ld d, a + xor b + jr cont + +; ---------------------- +; THE 'KEYBOARD' ROUTINE +; ---------------------- +rst38 push af + push bc + push de + push hl + ld de, keytab-2&$ff + ld bc, $fefe + ld h, d + ld l, d +keyscn inc h + in a, (c) + rrca + jr c, keysc5 + ld l, h +keysc5 rlc b + jr c, keyscn + ld h, d + add hl, de + ld a, (hl) +keysc6 ld hl, (codcnt) + jr z, keysc8 + res 7, l + cp l + jr nz, keysc7 + dec h + jr nz, keysc9 + ld h, 3 + defb $c2 +keysc7 ld h, 32 + or $80 +keysc8 ld l, a +keysc9 ld (codcnt), hl + ei + pop hl + pop de + pop bc + pop af + ret + +cont xor c + rlca + rlca + ld e, a + inc bc + ldi + inc bc + bit 4, b + jr z, start3 + IF LREG=35 + ld bc, $c902 + push bc + ld bc, $08b0 + push bc + ld bc, $ed77 + push bc + ELSE + ld hl, snaps-$100 + ld d, $ff + ld b, 1 + ldir + ld l, e + ENDIF + ld d, codcnt>>8 + ei + +games call SELEC +waitky ld a, (de) + sub $80 + jr c, waitky + ld (de), a + sub $0d + jr z, gamen + call SELEC + ld a, (de) + sub 'a' + jr z, gamdw + sub 'q'-'a' + jr nz, games +gamup dec l + jp p, games +gamdw inc l + ld a, 11 + cp l + jr c, gamup + jr games +gamen di + ex af, af' + ld a, l + cp 10 + jr nc, gamen1 + adc a, a + add a, l + jr gamen3 +keytab defb $61;, $73, $64, $66, $67 ; a s d f g + defb $71;, $77, $65, $72, $74 ; q w e r t + defb $31;, $32, $33, $34, $35 ; 1 2 3 4 5 + defb $30;, $39, $38, $37, $36 ; 0 9 8 7 6 + defb $70;, $6f, $69, $75, $79 ; p o i u y + defb $0d;, $6c, $6b, $6a, $68 ; Enter l k j h + defb $0d;$20 + +gamen1 jp z, manic + IF LREG=35 + ld a, $9f + ld bc, 0 + push bc + jp $fffe +gamen3 sbc hl, hl + ld d, $40 + ld b, d + ld c, l + call 2-LOFF + ex af, af + inc a + ld b, h + ld h, l + call 2-LOFF + ex af, af + inc a + ld h, l + ld bc, $3ff8 + call 2-LOFF + ex af, af + ELSE + ld bc, $3fff + ld h, c + ld l, c + ld (hl), 2 + jp (hl) +gamen3 inc a + ld d, $40 + ld c, $fc + add a, a + add a, a + add a, a + call 10-LOFF + ex af, af + ld c, l + inc a + add a, a + add a, a + add a, a + call 10-LOFF + ex af, af + ld c, $fd+game3-snaps + inc a + add a, a + add a, a + add a, a + call 10-LOFF + ex af, af + dec a + ENDIF +gamen4 inc b + sub 3 + jr nz, gamen4 + ld a, b + ld hl, snaps-LREG + ld bc, LREG +gamen5 add hl, bc + dec a + jr nz, gamen5 + ld c, LOFF + ldir + ld sp, hl + pop hl + ld a, l + ld i, a + dec h + jr nz, gamen6 + im 2 +gamen6 pop hl + pop de + pop bc + exx + IF LREG=35 + sbc hl, hl + ELSE + ld hl, 2 + ENDIF + pop af + ex af, af' + pop de + pop bc + pop iy + pop ix + add hl, sp + IF LREG>35 + pop af + ENDIF + jp (hl) + +game3 + IF LREG>35 + ld b, 5 +game4 ld hl, $3ffc + rlca + jr nc, game5 + inc l +game5 ld (hl), a + djnz game4 + ret z + ld l, b + ld b, h + ld h, l + ldir + ex af, af' + jr game3 + ENDIF +snaps incbin regs.bin +pagin jp start1 + +SELEC push hl + exx + pop hl + ld de, 0 + ld b, 31 + add hl, hl + add hl, hl + add hl, hl + add hl, hl + ld h, $2c + add hl, hl + add hl, de +sel02 ld a, (hl) + xor %00111111 + ld (hl), a + inc l + djnz sel02 + exx + ret + + incbin screen.cut.exo.opt + +manic ei + ld a, $80 + ld sp, $8000 + ld d, $84 + push de + out ($fe), a + ld de, $5aff + ld hl, endscr-1 + IF LREG=35 + ld (hl), a + ELSE + ld ($3ffe), a + ENDIF + call deexo +init ld d, e + ld hl, endman-1 + +deexo include d.asm + incbin manic.scr.exo.opt +endscr incbin manic.cut.exo.opt +endman block $3d00-$, $ff + +; ------------------------------- +; THE 'ZX SPECTRUM CHARACTER SET' +; ------------------------------- + +;; char-set + +; $20 - Character: ' ' CHR$(32) + +L3D00: DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + +; $21 - Character: '!' CHR$(33) + + DEFB %00000000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + DEFB %00010000 + DEFB %00000000 + +; $22 - Character: '"' CHR$(34) + + DEFB %00000000 + DEFB %00100100 + DEFB %00100100 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + +; $23 - Character: '#' CHR$(35) + + DEFB %00000000 + DEFB %00100100 + DEFB %01111110 + DEFB %00100100 + DEFB %00100100 + DEFB %01111110 + DEFB %00100100 + DEFB %00000000 + +; $24 - Character: '$' CHR$(36) + + DEFB %00000000 + DEFB %00001000 + DEFB %00111110 + DEFB %00101000 + DEFB %00111110 + DEFB %00001010 + DEFB %00111110 + DEFB %00001000 + +; $25 - Character: '%' CHR$(37) + + DEFB %00000000 + DEFB %01100010 + DEFB %01100100 + DEFB %00001000 + DEFB %00010000 + DEFB %00100110 + DEFB %01000110 + DEFB %00000000 + +; $26 - Character: '&' CHR$(38) + + DEFB %00000000 + DEFB %00010000 + DEFB %00101000 + DEFB %00010000 + DEFB %00101010 + DEFB %01000100 + DEFB %00111010 + DEFB %00000000 + +; $27 - Character: ''' CHR$(39) + + DEFB %00000000 + DEFB %00001000 + DEFB %00010000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + +; $28 - Character: '(' CHR$(40) + + DEFB %00000000 + DEFB %00000100 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00000100 + DEFB %00000000 + +; $29 - Character: ')' CHR$(41) + + DEFB %00000000 + DEFB %00100000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00100000 + DEFB %00000000 + +; $2A - Character: '*' CHR$(42) + + DEFB %00000000 + DEFB %00000000 + DEFB %00010100 + DEFB %00001000 + DEFB %00111110 + DEFB %00001000 + DEFB %00010100 + DEFB %00000000 + +; $2B - Character: '+' CHR$(43) + + DEFB %00000000 + DEFB %00000000 + DEFB %00001000 + DEFB %00001000 + DEFB %00111110 + DEFB %00001000 + DEFB %00001000 + DEFB %00000000 + +; $2C - Character: ',' CHR$(44) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00001000 + DEFB %00001000 + DEFB %00010000 + +; $2D - Character: '-' CHR$(45) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00111110 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + +; $2E - Character: '.' CHR$(46) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00011000 + DEFB %00011000 + DEFB %00000000 + +; $2F - Character: '/' CHR$(47) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000010 + DEFB %00000100 + DEFB %00001000 + DEFB %00010000 + DEFB %00100000 + DEFB %00000000 + +; $30 - Character: '0' CHR$(48) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000110 + DEFB %01001010 + DEFB %01010010 + DEFB %01100010 + DEFB %00111100 + DEFB %00000000 + +; $31 - Character: '1' CHR$(49) + + DEFB %00000000 + DEFB %00011000 + DEFB %00101000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00111110 + DEFB %00000000 + +; $32 - Character: '2' CHR$(50) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %00000010 + DEFB %00111100 + DEFB %01000000 + DEFB %01111110 + DEFB %00000000 + +; $33 - Character: '3' CHR$(51) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %00001100 + DEFB %00000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $34 - Character: '4' CHR$(52) + + DEFB %00000000 + DEFB %00001000 + DEFB %00011000 + DEFB %00101000 + DEFB %01001000 + DEFB %01111110 + DEFB %00001000 + DEFB %00000000 + +; $35 - Character: '5' CHR$(53) + + DEFB %00000000 + DEFB %01111110 + DEFB %01000000 + DEFB %01111100 + DEFB %00000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $36 - Character: '6' CHR$(54) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000000 + DEFB %01111100 + DEFB %01000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $37 - Character: '7' CHR$(55) + + DEFB %00000000 + DEFB %01111110 + DEFB %00000010 + DEFB %00000100 + DEFB %00001000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + +; $38 - Character: '8' CHR$(56) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %00111100 + DEFB %01000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $39 - Character: '9' CHR$(57) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000010 + DEFB %00111110 + DEFB %00000010 + DEFB %00111100 + DEFB %00000000 + +; $3A - Character: ':' CHR$(58) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00010000 + DEFB %00000000 + DEFB %00000000 + DEFB %00010000 + DEFB %00000000 + +; $3B - Character: ';' CHR$(59) + + DEFB %00000000 + DEFB %00000000 + DEFB %00010000 + DEFB %00000000 + DEFB %00000000 + DEFB %00010000 + DEFB %00010000 + DEFB %00100000 + +; $3C - Character: '<' CHR$(60) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000100 + DEFB %00001000 + DEFB %00010000 + DEFB %00001000 + DEFB %00000100 + DEFB %00000000 + +; $3D - Character: '=' CHR$(61) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00111110 + DEFB %00000000 + DEFB %00111110 + DEFB %00000000 + DEFB %00000000 + +; $3E - Character: '>' CHR$(62) + + DEFB %00000000 + DEFB %00000000 + DEFB %00010000 + DEFB %00001000 + DEFB %00000100 + DEFB %00001000 + DEFB %00010000 + DEFB %00000000 + +; $3F - Character: '?' CHR$(63) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %00000100 + DEFB %00001000 + DEFB %00000000 + DEFB %00001000 + DEFB %00000000 + +; $40 - Character: '@' CHR$(64) + + DEFB %00000000 + DEFB %00111100 + DEFB %01001010 + DEFB %01010110 + DEFB %01011110 + DEFB %01000000 + DEFB %00111100 + DEFB %00000000 + +; $41 - Character: 'A' CHR$(65) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01111110 + DEFB %01000010 + DEFB %01000010 + DEFB %00000000 + +; $42 - Character: 'B' CHR$(66) + + DEFB %00000000 + DEFB %01111100 + DEFB %01000010 + DEFB %01111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01111100 + DEFB %00000000 + +; $43 - Character: 'C' CHR$(67) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000000 + DEFB %01000000 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $44 - Character: 'D' CHR$(68) + + DEFB %00000000 + DEFB %01111000 + DEFB %01000100 + DEFB %01000010 + DEFB %01000010 + DEFB %01000100 + DEFB %01111000 + DEFB %00000000 + +; $45 - Character: 'E' CHR$(69) + + DEFB %00000000 + DEFB %01111110 + DEFB %01000000 + DEFB %01111100 + DEFB %01000000 + DEFB %01000000 + DEFB %01111110 + DEFB %00000000 + +; $46 - Character: 'F' CHR$(70) + + DEFB %00000000 + DEFB %01111110 + DEFB %01000000 + DEFB %01111100 + DEFB %01000000 + DEFB %01000000 + DEFB %01000000 + DEFB %00000000 + +; $47 - Character: 'G' CHR$(71) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000000 + DEFB %01001110 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $48 - Character: 'H' CHR$(72) + + DEFB %00000000 + DEFB %01000010 + DEFB %01000010 + DEFB %01111110 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00000000 + +; $49 - Character: 'I' CHR$(73) + + DEFB %00000000 + DEFB %00111110 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00111110 + DEFB %00000000 + +; $4A - Character: 'J' CHR$(74) + + DEFB %00000000 + DEFB %00000010 + DEFB %00000010 + DEFB %00000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $4B - Character: 'K' CHR$(75) + + DEFB %00000000 + DEFB %01000100 + DEFB %01001000 + DEFB %01110000 + DEFB %01001000 + DEFB %01000100 + DEFB %01000010 + DEFB %00000000 + +; $4C - Character: 'L' CHR$(76) + + DEFB %00000000 + DEFB %01000000 + DEFB %01000000 + DEFB %01000000 + DEFB %01000000 + DEFB %01000000 + DEFB %01111110 + DEFB %00000000 + +; $4D - Character: 'M' CHR$(77) + + DEFB %00000000 + DEFB %01000010 + DEFB %01100110 + DEFB %01011010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00000000 + +; $4E - Character: 'N' CHR$(78) + + DEFB %00000000 + DEFB %01000010 + DEFB %01100010 + DEFB %01010010 + DEFB %01001010 + DEFB %01000110 + DEFB %01000010 + DEFB %00000000 + +; $4F - Character: 'O' CHR$(79) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $50 - Character: 'P' CHR$(80) + + DEFB %00000000 + DEFB %01111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01111100 + DEFB %01000000 + DEFB %01000000 + DEFB %00000000 + +; $51 - Character: 'Q' CHR$(81) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01010010 + DEFB %01001010 + DEFB %00111100 + DEFB %00000000 + +; $52 - Character: 'R' CHR$(82) + + DEFB %00000000 + DEFB %01111100 + DEFB %01000010 + DEFB %01000010 + DEFB %01111100 + DEFB %01000100 + DEFB %01000010 + DEFB %00000000 + +; $53 - Character: 'S' CHR$(83) + + DEFB %00000000 + DEFB %00111100 + DEFB %01000000 + DEFB %00111100 + DEFB %00000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $54 - Character: 'T' CHR$(84) + + DEFB %00000000 + DEFB %11111110 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + +; $55 - Character: 'U' CHR$(85) + + DEFB %00000000 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00111100 + DEFB %00000000 + +; $56 - Character: 'V' CHR$(86) + + DEFB %00000000 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %00100100 + DEFB %00011000 + DEFB %00000000 + +; $57 - Character: 'W' CHR$(87) + + DEFB %00000000 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01000010 + DEFB %01011010 + DEFB %00100100 + DEFB %00000000 + +; $58 - Character: 'X' CHR$(88) + + DEFB %00000000 + DEFB %01000010 + DEFB %00100100 + DEFB %00011000 + DEFB %00011000 + DEFB %00100100 + DEFB %01000010 + DEFB %00000000 + +; $59 - Character: 'Y' CHR$(89) + + DEFB %00000000 + DEFB %10000010 + DEFB %01000100 + DEFB %00101000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + +; $5A - Character: 'Z' CHR$(90) + + DEFB %00000000 + DEFB %01111110 + DEFB %00000100 + DEFB %00001000 + DEFB %00010000 + DEFB %00100000 + DEFB %01111110 + DEFB %00000000 + +; $5B - Character: '[' CHR$(91) + + DEFB %00000000 + DEFB %00001110 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001110 + DEFB %00000000 + +; $5C - Character: '\' CHR$(92) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000000 + DEFB %00100000 + DEFB %00010000 + DEFB %00001000 + DEFB %00000100 + DEFB %00000000 + +; $5D - Character: ']' CHR$(93) + + DEFB %00000000 + DEFB %01110000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %01110000 + DEFB %00000000 + +; $5E - Character: '^' CHR$(94) + + DEFB %00000000 + DEFB %00010000 + DEFB %00111000 + DEFB %01010100 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + +; $5F - Character: '_' CHR$(95) + + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %11111111 + +; $60 - Character: ' £ ' CHR$(96) + + DEFB %00000000 + DEFB %00011100 + DEFB %00100010 + DEFB %01111000 + DEFB %00100000 + DEFB %00100000 + DEFB %01111110 + DEFB %00000000 + +; $61 - Character: 'a' CHR$(97) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111000 + DEFB %00000100 + DEFB %00111100 + DEFB %01000100 + DEFB %00111100 + DEFB %00000000 + +; $62 - Character: 'b' CHR$(98) + + DEFB %00000000 + DEFB %00100000 + DEFB %00100000 + DEFB %00111100 + DEFB %00100010 + DEFB %00100010 + DEFB %00111100 + DEFB %00000000 + +; $63 - Character: 'c' CHR$(99) + + DEFB %00000000 + DEFB %00000000 + DEFB %00011100 + DEFB %00100000 + DEFB %00100000 + DEFB %00100000 + DEFB %00011100 + DEFB %00000000 + +; $64 - Character: 'd' CHR$(100) + + DEFB %00000000 + DEFB %00000100 + DEFB %00000100 + DEFB %00111100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111100 + DEFB %00000000 + +; $65 - Character: 'e' CHR$(101) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111000 + DEFB %01000100 + DEFB %01111000 + DEFB %01000000 + DEFB %00111100 + DEFB %00000000 + +; $66 - Character: 'f' CHR$(102) + + DEFB %00000000 + DEFB %00001100 + DEFB %00010000 + DEFB %00011000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00000000 + +; $67 - Character: 'g' CHR$(103) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111100 + DEFB %00000100 + DEFB %00111000 + +; $68 - Character: 'h' CHR$(104) + + DEFB %00000000 + DEFB %01000000 + DEFB %01000000 + DEFB %01111000 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %00000000 + +; $69 - Character: 'i' CHR$(105) + + DEFB %00000000 + DEFB %00010000 + DEFB %00000000 + DEFB %00110000 + DEFB %00010000 + DEFB %00010000 + DEFB %00111000 + DEFB %00000000 + +; $6A - Character: 'j' CHR$(106) + + DEFB %00000000 + DEFB %00000100 + DEFB %00000000 + DEFB %00000100 + DEFB %00000100 + DEFB %00000100 + DEFB %00100100 + DEFB %00011000 + +; $6B - Character: 'k' CHR$(107) + + DEFB %00000000 + DEFB %00100000 + DEFB %00101000 + DEFB %00110000 + DEFB %00110000 + DEFB %00101000 + DEFB %00100100 + DEFB %00000000 + +; $6C - Character: 'l' CHR$(108) + + DEFB %00000000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00001100 + DEFB %00000000 + +; $6D - Character: 'm' CHR$(109) + + DEFB %00000000 + DEFB %00000000 + DEFB %01101000 + DEFB %01010100 + DEFB %01010100 + DEFB %01010100 + DEFB %01010100 + DEFB %00000000 + +; $6E - Character: 'n' CHR$(110) + + DEFB %00000000 + DEFB %00000000 + DEFB %01111000 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %00000000 + +; $6F - Character: 'o' CHR$(111) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111000 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111000 + DEFB %00000000 + +; $70 - Character: 'p' CHR$(112) + + DEFB %00000000 + DEFB %00000000 + DEFB %01111000 + DEFB %01000100 + DEFB %01000100 + DEFB %01111000 + DEFB %01000000 + DEFB %01000000 + +; $71 - Character: 'q' CHR$(113) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111100 + DEFB %00000100 + DEFB %00000110 + +; $72 - Character: 'r' CHR$(114) + + DEFB %00000000 + DEFB %00000000 + DEFB %00011100 + DEFB %00100000 + DEFB %00100000 + DEFB %00100000 + DEFB %00100000 + DEFB %00000000 + +; $73 - Character: 's' CHR$(115) + + DEFB %00000000 + DEFB %00000000 + DEFB %00111000 + DEFB %01000000 + DEFB %00111000 + DEFB %00000100 + DEFB %01111000 + DEFB %00000000 + +; $74 - Character: 't' CHR$(116) + + DEFB %00000000 + DEFB %00010000 + DEFB %00111000 + DEFB %00010000 + DEFB %00010000 + DEFB %00010000 + DEFB %00001100 + DEFB %00000000 + +; $75 - Character: 'u' CHR$(117) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111000 + DEFB %00000000 + +; $76 - Character: 'v' CHR$(118) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000100 + DEFB %01000100 + DEFB %00101000 + DEFB %00101000 + DEFB %00010000 + DEFB %00000000 + +; $77 - Character: 'w' CHR$(119) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000100 + DEFB %01010100 + DEFB %01010100 + DEFB %01010100 + DEFB %00101000 + DEFB %00000000 + +; $78 - Character: 'x' CHR$(120) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000100 + DEFB %00101000 + DEFB %00010000 + DEFB %00101000 + DEFB %01000100 + DEFB %00000000 + +; $79 - Character: 'y' CHR$(121) + + DEFB %00000000 + DEFB %00000000 + DEFB %01000100 + DEFB %01000100 + DEFB %01000100 + DEFB %00111100 + DEFB %00000100 + DEFB %00111000 + +; $7A - Character: 'z' CHR$(122) + + DEFB %00000000 + DEFB %00000000 + DEFB %01111100 + DEFB %00001000 + DEFB %00010000 + DEFB %00100000 + DEFB %01111100 + DEFB %00000000 + +; $7B - Character: '{' CHR$(123) + + DEFB %00000000 + DEFB %00001110 + DEFB %00001000 + DEFB %00110000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001110 + DEFB %00000000 + +; $7C - Character: '|' CHR$(124) + + DEFB %00000000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00001000 + DEFB %00000000 + +; $7D - Character: '}' CHR$(125) + + DEFB %00000000 + DEFB %01110000 + DEFB %00010000 + DEFB %00001100 + DEFB %00010000 + DEFB %00010000 + DEFB %01110000 + DEFB %00000000 + +; $7E - Character: '~' CHR$(126) + + DEFB %00000000 + DEFB %00010100 + DEFB %00101000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + DEFB %00000000 + +; $7F - Character: ' © ' CHR$(127) + + DEFB %00111100 + DEFB %01000010 + DEFB %10011001 + DEFB %10100001 + DEFB %10100001 + DEFB %10011001 + DEFB %01000010 + DEFB %00111100 + + IF LREG=35 + incbin rest.bin + incbin sin_leches.rom + ELSE + incbin sin_leches.rom + incbin rest.bin + ENDIF diff --git a/hardware/kartusho/snapshots/genMenu.c b/hardware/kartusho/snapshots/genMenu.c new file mode 100644 index 0000000..23fcea1 --- /dev/null +++ b/hardware/kartusho/snapshots/genMenu.c @@ -0,0 +1,91 @@ +#include +#include + +unsigned char image[0xc000], font[0x1000]; +char tmpstr[50]; +unsigned short i, j, k, af, pos, lreg, loff; +FILE *fi, *fo, *ft; + +int main(int argc, char *argv[]){ + if( argv[1][0]=='1' ) + lreg= 61, + loff= 32; + else + lreg= 35, + loff= 8; + ft= fopen("fuente6x8.bin", "r"); + fread(font+0x80, 1, 0x380, ft); + for ( i= 0x400; i<0x1000; i++ ) + font[i]= (font[i-0x400] >> 2) | (font[i-0x400] << 6); + fi= fopen("menu.txt", "r"); + for ( i= 0; i<12; i++ ){ + fgets(tmpstr, 50, fi); + k= 0; + pos= i<<5&0xf0 | i<<8&0x800; + while ( 1 ){ + for ( j= 0; j<8; j++, pos+= 0x100 ) + image[pos]= font[j|tmpstr[k]<<3]; + pos-= 0x800; + if( tmpstr[++k]<14 ) + break; + for ( j= 0; j<8; j++, pos+= 0x100 ) + image[pos]= image[pos]&0xfc | font[0xc00|j|tmpstr[k]<<3]&0x3, + image[pos+1]= font[0xc00|j|tmpstr[k]<<3]&0xfc; + pos-= 0x7ff; + if( tmpstr[++k]<14 ) + break; + for ( j= 0; j<8; j++, pos+= 0x100 ) + image[pos]= image[pos]&0xf0 | font[0x800|j|tmpstr[k]<<3]&0xf, + image[pos+1]= font[0x800|j|tmpstr[k]<<3]&0xf0; + pos-= 0x7ff; + if( tmpstr[++k]<14 ) + break; + for ( j= 0; j<8; j++, pos+= 0x100 ) + image[pos]= image[pos] | font[0x400|j|tmpstr[k]<<3]; + pos-= 0x7ff; + if( tmpstr[++k]<14 ) + break; + } + } + fo= fopen("screen.scr", "wb+"); + memset(image+0x1800, 0x38, 0x300); + fwrite(image, 1, 0x1b00, fo); + fclose(fi); + fclose(fo); + memset(font, 0, lreg*10); + fo= fopen("rest.bin", "wb+"); + for ( i= 0; i<10; i++ ){ + sprintf(tmpstr, "game%d.sna", i); + fi= fopen(tmpstr, "rb"); + fread(font+lreg*10, 1, 0x1b, fi); + fread(image, 1, 0xc000, fi); + pos= *(unsigned short*)(font+lreg*10+23); // SP + af= *(unsigned short*)(font+lreg*10+21); // AF + if( loff==8 ) + pos-= 2, + *(unsigned short*)(image+pos-0x4000)= af, + fwrite(image, 1, 0xc000, fo); + else + fwrite(image, 1, 0x4000, fo), + fwrite(image+0x3ffc, 1, 0x4000, fo), + fwrite(image+0x7ff8, 1, 0x4000, fo); + memcpy(font+i*lreg, image+0xc000-loff, loff); + font[i*lreg+loff]= font[lreg*10]; // I + font[i*lreg+loff+1]= font[lreg*10+25]-1; // IM + memcpy(font+i*lreg+loff+2, font+lreg*10+1, 8); // HL',DE',BC',AF' + memcpy(font+i*lreg+loff+10, font+lreg*10+11, 8); // DE,BC,IY,IX + *(unsigned short*)(font+i*lreg+loff+18)= af; + font[i*lreg+loff+18+(loff>>3&2)]= 0x21; // HL + *(unsigned short*)(font+i*lreg+loff+19+(loff>>3&2))= *(unsigned short*)(font+lreg*10+9); + font[i*lreg+loff+21+(loff>>3&2)]= 0x31; // SP + *(unsigned short*)(font+i*lreg+loff+22+(loff>>3&2))= pos; + font[i*lreg+loff+24+(loff>>3&2)]= 0xf3|font[lreg*10+19]<<1&8; // IFF + font[i*lreg+loff+25+(loff>>3&2)]= 0x18; // jr rel + font[i*lreg+loff+26+(loff>>3&2)]= i<9 ? lreg-2 : 0; + fclose(fi); + } + fclose(fo); + fo= fopen("regs.bin", "wb+"); + fwrite(font, 1, lreg*10, fo); + fclose(fo); +} diff --git a/hardware/kartusho/snapshots/genMenu.exe b/hardware/kartusho/snapshots/genMenu.exe new file mode 100644 index 0000000..58da611 Binary files /dev/null and b/hardware/kartusho/snapshots/genMenu.exe differ diff --git a/hardware/kartusho/snapshots/makev4.bat b/hardware/kartusho/snapshots/makev4.bat new file mode 100644 index 0000000..431c634 --- /dev/null +++ b/hardware/kartusho/snapshots/makev4.bat @@ -0,0 +1,7 @@ +genMenu 1 +rcs screen.scr screen.rcs +fcut screen.rcs 0 1000 screen.cut +call compress b1 5b00 screen.cut +echo define LREG 61 > define.asm +echo define LOFF 32 >> define.asm +sjasmplus genFlash.asm diff --git a/hardware/kartusho/snapshots/makevROM.bat b/hardware/kartusho/snapshots/makevROM.bat new file mode 100644 index 0000000..a41f1ea --- /dev/null +++ b/hardware/kartusho/snapshots/makevROM.bat @@ -0,0 +1,7 @@ +genMenu 0 +rcs screen.scr screen.rcs +fcut screen.rcs 0 1000 screen.cut +call compress b1 5b00 screen.cut +echo define LREG 35 > define.asm +echo define LOFF 8 >> define.asm +sjasmplus genFlash.asm diff --git a/hardware/kartusho/snapshots/manic.cut.exo.opt b/hardware/kartusho/snapshots/manic.cut.exo.opt new file mode 100644 index 0000000..4908636 Binary files /dev/null and b/hardware/kartusho/snapshots/manic.cut.exo.opt differ diff --git a/hardware/kartusho/snapshots/manic.scr.exo.opt b/hardware/kartusho/snapshots/manic.scr.exo.opt new file mode 100644 index 0000000..bae2bbd Binary files /dev/null and b/hardware/kartusho/snapshots/manic.scr.exo.opt differ diff --git a/hardware/kartusho/snapshots/menu.txt b/hardware/kartusho/snapshots/menu.txt new file mode 100644 index 0000000..baa5a3f --- /dev/null +++ b/hardware/kartusho/snapshots/menu.txt @@ -0,0 +1,12 @@ +Atic Atac 1983 Tim & Chris Stamper +Cobra 1983 Jonathan M. Smith +Commando 1985 Burkhill, Alderton +Knight Lore 1984 Tim & Chris Stamper +Mario Bros 1987 Choice Software +Nebulus 1987 John M. Phillips +Saboteur 1985 Clive Townsend +Super Stuntman 1988 Williamson, Wilson +Three Weeks 1986 D.Perry, Nick Jones +Underwurlde 1984 Tim & Chris Stamper +Manic Miner 1983 Matthew Smith +Pokemon+RP+easy 2013 Antonio Villena diff --git a/hardware/kartusho/snapshots/rcs.exe b/hardware/kartusho/snapshots/rcs.exe new file mode 100644 index 0000000..32b3dbb Binary files /dev/null and b/hardware/kartusho/snapshots/rcs.exe differ diff --git a/hardware/kartusho/snapshots/readme.txt b/hardware/kartusho/snapshots/readme.txt new file mode 100644 index 0000000..4473b70 --- /dev/null +++ b/hardware/kartusho/snapshots/readme.txt @@ -0,0 +1,18 @@ +How it works? +1. Replace the game?.sna for your owns. Only 48K SNAs are valid. +2. Modify menu.txt according the new snapshots. +3. Launch makev4.bat or makevROM.bat, depends if you want to + generate for kartusho v4 or Interface ROM respectively. +4. Burn the generated file "flash.rom" with your EEPROM programmer. + +---------- +¿Cómo funciona? +1. Reemplaza los juegos game?.sna por los juegos que quieras. Sólo + es válido el formato SNA para 48K. +2. Modifica menu.txt de acuerdo a los snapshots que hayas puesto. +3. Ejecuta makev4.bat o makevROM.bat dependiendo de si quieres + crear para kartusho v4 o para Interface ROM respectivamente. +4. Graba el archivo generado "flash.rom" con tu programador EEPROM. + +---------- +Created by AntonioVillena under CC by-SA license \ No newline at end of file diff --git a/hardware/kartusho/snapshots/sin_leches.rom b/hardware/kartusho/snapshots/sin_leches.rom new file mode 100644 index 0000000..0276ca1 Binary files /dev/null and b/hardware/kartusho/snapshots/sin_leches.rom differ diff --git a/hardware/kartusho/snapshots/sjasmplus.exe b/hardware/kartusho/snapshots/sjasmplus.exe new file mode 100644 index 0000000..a69ce5b Binary files /dev/null and b/hardware/kartusho/snapshots/sjasmplus.exe differ