From d7b443a677934774b6fb08b55325afcedbb4584d Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Sat, 1 Feb 2020 15:45:25 +0100 Subject: [PATCH] added c64 test programs --- c64testprgs/apaw.prg | Bin 0 -> 2499 bytes c64testprgs/charset.prg | Bin 0 -> 9398 bytes c64testprgs/concubism.prg | Bin 0 -> 8144 bytes c64testprgs/deadsun.prg | Bin 0 -> 6466 bytes c64testprgs/gotmyeyesonyou.prg | Bin 0 -> 6006 bytes c64testprgs/keyboardtest.prg | Bin 0 -> 3080 bytes c64testprgs/mabooty.prg | Bin 0 -> 7764 bytes c64testprgs/makeup.prg | Bin 0 -> 7996 bytes c64testprgs/medusa.prg | Bin 0 -> 9590 bytes c64testprgs/rasterIRQ.asm | 30 +++++ c64testprgs/rasterIRQ.prg | Bin 0 -> 80 bytes c64testprgs/scarecrow.prg | Bin 0 -> 9590 bytes c64testprgs/spritepos.prg | Bin 0 -> 86 bytes c64testprgs/testTOD.asm | 134 +++++++++++++++++++++ c64testprgs/testTOD.prg | Bin 0 -> 245 bytes c64testprgs/timer32.prg | Bin 0 -> 170 bytes c64testprgs/wizzine.prg | Bin 0 -> 1443 bytes c64testprgs/woolonhermind.prg | Bin 0 -> 8454 bytes src/main/kotlin/razorvine/c64emu/Screen.kt | 8 +- 19 files changed, 169 insertions(+), 3 deletions(-) create mode 100644 c64testprgs/apaw.prg create mode 100644 c64testprgs/charset.prg create mode 100644 c64testprgs/concubism.prg create mode 100644 c64testprgs/deadsun.prg create mode 100644 c64testprgs/gotmyeyesonyou.prg create mode 100644 c64testprgs/keyboardtest.prg create mode 100644 c64testprgs/mabooty.prg create mode 100644 c64testprgs/makeup.prg create mode 100644 c64testprgs/medusa.prg create mode 100644 c64testprgs/rasterIRQ.asm create mode 100644 c64testprgs/rasterIRQ.prg create mode 100644 c64testprgs/scarecrow.prg create mode 100644 c64testprgs/spritepos.prg create mode 100644 c64testprgs/testTOD.asm create mode 100644 c64testprgs/testTOD.prg create mode 100644 c64testprgs/timer32.prg create mode 100644 c64testprgs/wizzine.prg create mode 100644 c64testprgs/woolonhermind.prg diff --git a/c64testprgs/apaw.prg b/c64testprgs/apaw.prg new file mode 100644 index 0000000000000000000000000000000000000000..c547d26b8b808c46c5a7ef6cba89f7cf6287bb39 GIT binary patch literal 2499 zcma);Piz!b9LL|hS!QQ;%B-Wslz4fb)QeFL#&Ge%fx|-56W(@7?ZPBRZX)u>)7FNt zmBx~&3Fc)Ih*RhWG@4ldgp|ZU@vtR9H~?!cJi7;zJs3-3;`;sl-Yi`b5B|10@6GS` zdEeiknKpI&(7!1^-|@<8uL>d3?O)5YOY!nkkJQioEK)c7=bYUyJqo;rqdxWzHt)rY zGk4=mG-TFpxS8mUEsVOYZEo{;JaZz>PNn{P%~5w|oBO8v##j3S^-i!GRJ3qBZk>n+ zv2^TX*BnTKD29r*g7?M|}`ij>XyCMk$LMVJ5yvMXxkly4L>Ngv;%} zu6VsIbhlB{qF2nWrhesYTob9t!e-n~#ln2hRJ2|Qn$Kg+Mw?^pw2%ok7i1UH088p- z>+0DcyDD2q$ex2v<>{cN-U!Z@d(T`h&5m5-OZ!g~nyt(2Kh8%zpFPX%N0s-3 zMl@AcSV~i&b}q~LsjbtOWn-kaa6fK!VrVb?8n;$yqYIU*KG!{;22?lmppEQp!Pl)B zY1~?dc6OhWuXklbUXnk#+BrEZ4^Gd@ni$bf+5>A(I_WN%oBm`+wVDTh&)0|fny5kK z^xQ|m%!kHWy_?7L`>tNm9o|=s>FOhI<^I9pfk*#x>$*1G+j*Fmt}%yw50cQ2sV?70>N)|3ifjc~tGbhOU7a9+FzUj0+$QQ0sXLmakFj~senWg1mlRt(2pG9wk@}lglNu6!GV5vSx%$v zWU$@E0(|MdeU!Y|+kP>eQ5uQvyo(9p{K`(Vk9s_IBIoupsMOwxJ)DDT*X9t6HLQ;Y z&5HCuG^)f4w}&{oLuj1pQ*?tGG4}&{;_&F<2|Y>YhB)-m)&C@%k|GD{xbLX?fMW$Z zVbt2%8Z>`nNp#Uo#;YB4LZ@tN3AK?Z0FQGM{801D59}yEOj6T2ppx;0f<3J##}5z= zO)`4D609TnFW7@bsVX`2qymRC9H50$h7=;(zq)^Qjk4x?*2@u++~ky6g%=#@4cmU) zs4e(Q{QoS14U=Bzgx;{j?g`s8R|qe3LofF@up;k86uGWj&i&%*3M1h~a70BIEwO0(kG*h^oRpPMGkdhu^~?8djG}w(l3=txUwMSi;9*j6!;Dk zL0Z&kITp8hx#cJ-P*-FW@_pC!9M5&RM9bwPw;l6k z<=~4US&sCuV{eWlSP?>tvFUH|Z_AmOm$~@Vr?KkyFBNpZZEDR6@yx}z`DHxw72^GV R^Lx8|7oYl(FhJ|Ie*tD}gvrFmJJb%6KYESU)i4NVF`x{wBK3kU)QQ7i~5D2vb*K|wZ^ z3MhiI)M^1Mf^3R_A_zqk6cGi%1w}<<5i6kof9}0+-b^Nbewmjy^Ui<&bIyOxU1oNe zQ$MFnF7y^HTfWMhT6WO%qm80H9FB@hzPbTnooi{1# z=TyjgFUaH)zV9c3jGqYoY$8Y|6Mim@dx(3+8}%;q4j3Qvdi*_bU*+}mj^o{m=`jx= z+*f(IjBJ}zSxgnCEETAgDkwoU;i&Wusz6%iRuxhC8B3LAbciaOD?ydARM{+}TjgbQ zlABu%Dt{!C2yy`uOzN=xmn`>s$CCRjmc!=OINgwx@9)|>zIgFsZ`ZxN-lTp^;-j28 zx1Ol|#-_X#6Vp(5i8r})dYLyhwnR3~ZIF##I+IMM688+~ebBqn3)3le1>D5c)IrOq zy=5SJWNstC0f2!48AS@1mo1g&=Qhcetdvqf=&5O~tyGmY=f~gV85f14;U!zvGBc!` zJmV`C&{8?Etd+=QI1(~=-Zie2?*SjG`#k;F5^rqU2qT{<3*{`^Tm0?q;qSBj9sA1wc;9S+8HkVv7YgJdEMG3(@y z<*&n-N$8&)6*=Ce;$L;w%!Pvfv?J%2&`5#RW=V6db@RpMCihtYTHmfkB zBSR#Ym18R2fR%%|1b{RM;NM0chIFu@;!P#ML-q5#qZkxlnWU1XGjeam ze_*tVaH$E1p)y$rOI4n&kR4s{X#`~08A=YTlk8Zz1I*N1^F}xUa^_`1>#E$*+H-Wx zENsbq%DS-fZPu(Y#e~I*;>+QcJ2`d@%G%ROQ$#tva%VT(m^2791Ii?qSMFkstY;41 zAxQvfp_1HE`Syr8Vd{;1f*id*UO5Lg!0^hN+<#lEcZPvJ6$v0|0%J z(V4|g!No~NQ5II$tCgJ;{mH@A4R~rQVgA#GcfOol-3U|MResnN)lD&5n8udLuCsT( z_vNnYW?&GyQh?G?h0qEU!k4G2TYx}E7zEuiT8tinD|w^3HBSH@ouQmqR_gkiHriPi z2JHSMsAFb8bziT7lNV+BbMd z+toFm+FTR{gSGj#ny$#e*=YgtXiazYoX^YvUtXx`(dS9buqXvptFpEi7N;jfaC)jB z3}U!;0T3LOHE}~s!1U$IWNlx5yplr&iqELz=-PfA%jMTH7^O+PzIFgc^sRZRW3(2r zNWFH@jzpMT+LVGt;?R3)hw@%6zy+>=r)!7fj?Hr5)R4MFezeWAV035Qu0;U&%?CbG zw;Rk>-~3GutlNFYbNEEP*4Fv31X^P1qjL!+JV6K41$LMzWmHhPt}f&-DyNNRM8sP> zfe3X;SZ(Q?$xgGU>Qa`|G#s0bk^1sxU7DPsuAZP`$#s3l9MEO7YhDI`5Mk=hrMs8K z0n2IT%h=|y@=23`l(1;l|z6$vA_4<7P(d`E8 zftgjh*E1o&e0jKj5m}fQ!sju7CVS~r_-p+*5JpHGT~wsFkW~#6r5V^+3^Z(53;?U_ zc=f2kBTaOkm}=OUBq$M2SC-xk&>&81*e?pgt#I)mKHo4&J2Q{P@807S;LEKI`_BTQ zTL$`M!#fp$eM2RLtekRCn-W85U$!?K5F;@I@t=;gDOwws#O!V)W@Om^v31t03&g-!brUMF8U-_G#*&MU`Lwf zmpdA#U}XcD2x4lfN>4YgpdDY%aN5!{1Q3NE<<-V%V01Y!i-Il;ZA}NMUy3>FCAp?| z#l}YInKb3VrgxLWEjEr_j%`{Q8)ZBLB^NfW!gH7ZEO+^4(`vHfK*S5l;8pNR?r%C6 zh-9MRPo8T!B<8hn#Lmr!(lZNe%I|v3KJull`8_2#bIph0X;fb{243!?tY|(w<}pAc z+Lx?te(%h2DukTZd_**e>x8*%y{~OPGBQTGv8Ckh=A$A@Q5e5&UK4lbs$|@4Z$3I2 z=PXeItu4nCj4TdkVaxkqpQTW)k>%)?W646+*)KV*<^4d7VA+oS$)znH;8;6vOv)zk ztu4pJEJQ?B+1Bzw*rLz*c?Y3hY*`B%W+=Zel-ltsTaS+oF6w^iZ#@B4S4dXWx{>kL z55eNJvvtEN!#_Eq^+YumP9-;VL+eQ;tT89DsrAD|_~^HS?afeH9U%3bId^6;(8bvi(d_x%BXbIr0Y(4g>_9+kTewM;4X?;Rf6dsFI0%OZ&Pw zh~MszKfzF(Uk=IiX#4s&h|${OvMl_HnwD4FH^ebkA0+}>TSHnq&W>YjX^COCnTpHa z9iNPWLWaRZ8-!1yC5*gsRL41S5OoBQ9Tgz^vU}juU;I)qP3P1>&T2u4H2=z=$+x+tjAVzHy6~Z^gT{!ity*A;!B?cb>sYtNM)A+?Zp|@eSH4Kj>+~c z196vQ+CKl1IFn^5($eevEI~R)Ae{cnVPw((t(c2DKj%1ydB*#)#W=mWVz~DXwM*Ak4waA9=uUserzEwHeDK z(j`?ZX?WvY>$*3`;&MnuXm^=9ZtDJeQCx0?jMY-Mb$_FPi`{9vBgXYg_m&wbYE_tH zYtIcp71YjEnwi-CTG(^r|3cZ$IlAX2qEb;WK}{$T^|$iL`90r^ak<`dcjs|y&sLzg zt!w65VXA6A>vPociJor}WwVcJ=^{6G+1_(=%p*PUJQn2)p3dHH6G3*}vg|6NyDq** znXPNA_ZEQAL_8Jn0=+9B27+cy@2#$;o z7j@Gy3%*+d#68p=ViBaAx8Qp*cPb{N(nA~tP$jo4xSK@GTXiuiGAcx=h=&$@pNK3z z^AVa3CcOCN9;J9`!96tdcNmJC1cpiR*oMzc0idS7d({g7OvDV;##nFxqKM%x=j^GT-BxU9BpI}9D zrCxHz@Sn-fU1#=7t{Q#;sG`^l`uFbPzgR@cK9^^P|4KjkDnz4omdMVDzrn5xlHL8Z ztFWx_l+P6ht4n|4#S$d(iMS;3cOr^^EiH5_$0uGQDqnE@xhoc&T%7oah7(QkC|rw@ OZzWzXMihD#k^cgu8l43I literal 0 HcmV?d00001 diff --git a/c64testprgs/concubism.prg b/c64testprgs/concubism.prg new file mode 100644 index 0000000000000000000000000000000000000000..d79e5a5aeb537736de7be1003e1c40771b7c35e2 GIT binary patch literal 8144 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 literal 0 HcmV?d00001 diff --git a/c64testprgs/deadsun.prg b/c64testprgs/deadsun.prg new file mode 100644 index 0000000000000000000000000000000000000000..576fb465254d87cc2407d195b160e6801ea89665 GIT binary patch literal 6466 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 literal 0 HcmV?d00001 diff --git a/c64testprgs/keyboardtest.prg b/c64testprgs/keyboardtest.prg new file mode 100644 index 0000000000000000000000000000000000000000..24b5493e25ccb7d071929a7caadb14e9d2b6ece9 GIT binary patch literal 3080 zcmbuBYi!%r8HP!bltfAt6_Sqa#7U0pq>1BPBwy8L-GZP$n$B%~w-d#UhGN))G+8d| z+AJu#b)h?KrqBWz&;dI`pp`~XoAd&-KY~SDgJE0k!X1a*NXi9_aE9o*>RLoUAPV$s9h-59@24TvgAd+=e@v2CgtKyPK?x>1sk+f9B zUq!O9Dn1a&ra%bf&Z_;1NH$kRL?T)=ZczT)7xi#uI>z{O`=eBQ->c4v}qu8=5RcUzSgFBT62+FFg_?>~o7hv=?)2 zd%yGTueS6)@Zgq*`ud-Eymf2y#``yIe(a8ucb+&SyuSVV&t7@?jcoDWv#~4NxKsRh zPls-NvUu~;C7)pj20MnDj(WE**IQn$>pG6(Izc0qR|ZCjp)U_&&f701SX< zcxxa?ng;J3fLVY)0Q?c)PXK=b_#1Bx21$)V0BZr(0c-$h2514;1h84KhJt`Y;2j1y z0`M(>;{YcC9s_t>u!e)Ai{Skdpa}45fXe{C0r)Mz?*(flND{*V!~kRf1z;6`22cl3 zAGSt=fPLU)0mcCi0(=eN5rD4)d?TDYw)?~_>nQq6ad8zz6?+p-rtzAWc`2RIi+;3VNNIxJ_PrHIGwdS>Y9x z9%Q9FEh>g}6c^~F#(A?H+1=$jiYk4o7>Vk&^EUEaDzyi3s-~h!Tdlm#O5T&G(#R|I z^du|oFPui<4ixS};htJ~UDfl#99Np(hID&JXIFPm=B`xR_NH2S-Icsm^@6H5)`?1z z*}8s({jnM!jzpzc{O(=%)SBP%9(vMpt!dy^hZ6F(9XqKwvitZgE9hBnL|T&N$}eBJ z)_-nQ+%H~l9bhn$go0R37gvjVBixZfY1EE7P$%j_-KeK*b4o&2l{iW&s*YOHmCo`8 zv&&m7UtxP%l%>y0Ohh1V`FBtG!KdMM*F?E4uCob2snbwQXw<5`N0witAd9VMMZKI< zW0Tc8{%@dPbpN$_52?~?9NMMM|F1u}iHCoeO-Yx2rA=kej!iwB`z9^IWpeauEUf33 zw7jq789hVTT!w^l1wS8}JI73NbCb;6zu372=R#Ot;E9mQ<(CcHB}*nVcb=U)Gn&~N z&duyctIGa)K95l znMU{e#sO=Teh_l>|FaOaMkSujzL7ipv1^KF=pBMC>vid&{E_BW$OH`!l-WBu literal 0 HcmV?d00001 diff --git a/c64testprgs/mabooty.prg b/c64testprgs/mabooty.prg new file mode 100644 index 0000000000000000000000000000000000000000..788342d8ad9092129940b324e91063db86b870fc GIT binary patch literal 7764 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 D62e`2 literal 0 HcmV?d00001 diff --git a/c64testprgs/makeup.prg b/c64testprgs/makeup.prg new file mode 100644 index 0000000000000000000000000000000000000000..808afdc1326670957ce5a5df2fec4d9dec39a71e GIT binary patch literal 7996 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 literal 0 HcmV?d00001 diff --git a/c64testprgs/medusa.prg b/c64testprgs/medusa.prg new file mode 100644 index 0000000000000000000000000000000000000000..d058e9f4f76bf391e5f0ec1ee208ea8dac263d63 GIT binary patch literal 9590 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 Ksbc=J^8WxSFom!H literal 0 HcmV?d00001 diff --git a/c64testprgs/rasterIRQ.asm b/c64testprgs/rasterIRQ.asm new file mode 100644 index 0000000..7e3620b --- /dev/null +++ b/c64testprgs/rasterIRQ.asm @@ -0,0 +1,30 @@ + + *=$0801 + .word (+), 2005 + .null $9e, format("%d", start) ++ .word 0 + + * = 2084 + + +start + sei + lda #$7f + sta $dc0d + and $d011 + sta $d011 + lda #123 + sta $d012 + lda #irq + sta $0315 + lda #1 + sta $d01a + cli + rts + +irq + inc $0400 + asl $d019 + jmp $ea31 diff --git a/c64testprgs/rasterIRQ.prg b/c64testprgs/rasterIRQ.prg new file mode 100644 index 0000000000000000000000000000000000000000..cdfd31f8d0a4e3454e7fda8edad5f2aefb5210f2 GIT binary patch literal 80 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 literal 0 HcmV?d00001 diff --git a/c64testprgs/spritepos.prg b/c64testprgs/spritepos.prg new file mode 100644 index 0000000000000000000000000000000000000000..08b1a4673f885885afa6a7570ebf6414d164ae55 GIT binary patch literal 86 zcmZSN;OF3Cm~LcXVxVJaV8EcsA;Qq;xyfLOnX%P$GZO=YRh~LVrlwX+3}zg14AV`G gjm#`{3>jQFG{77a3mr29h9C|j2+vZ-#DD<^0RAlz3jhEB literal 0 HcmV?d00001 diff --git a/c64testprgs/testTOD.asm b/c64testprgs/testTOD.asm new file mode 100644 index 0000000..3c8c843 --- /dev/null +++ b/c64testprgs/testTOD.asm @@ -0,0 +1,134 @@ + CIA1 = $DC00 + CIA2 = $DD00 + SCREEN = $0400 + + *=$0801 + .word (+), 2005 + .null $9e, format("%d", start) ++ .word 0 + + * = 2084 + + +start + jsr $e544 ; clear screen + lda CIA1+15 + and #%01111111 + sta CIA1+15 + lda CIA2+15 + and #%01111111 + sta CIA2+15 + + lda #$08 + sta CIA1+11 + lda #$13 + sta CIA2+11 + lda #$59 + sta CIA1+10 + lda #$20 + sta CIA2+10 + lda #$50 + sta CIA1+9 + lda #$40 + sta CIA2+9 + lda #$00 + sta CIA1+8 + sta CIA2+8 + + lda CIA1+8 ; start TOD timer in CIA1 + lda CIA2+8 ; start TOD timer in CIA2 + +loop + lda CIA1+8 + ora #'0' + sta SCREEN+0 + + lda CIA2+8 + ora #'0' + sta SCREEN+0+40 + + lda CIA1+9 + tay + lsr a + lsr a + lsr a + lsr a + ora #'0' + sta SCREEN+2 + tya + and #$0f + ora #'0' + sta SCREEN+3 + + lda CIA2+9 + tay + lsr a + lsr a + lsr a + lsr a + ora #'0' + sta SCREEN+2+40 + tya + and #$0f + ora #'0' + sta SCREEN+3+40 + + lda CIA1+10 + tay + lsr a + lsr a + lsr a + lsr a + ora #'0' + sta SCREEN+5 + tya + and #$0f + ora #'0' + sta SCREEN+6 + + lda CIA2+10 + tay + lsr a + lsr a + lsr a + lsr a + ora #'0' + sta SCREEN+5+40 + tya + and #$0f + ora #'0' + sta SCREEN+6+40 + + lda CIA1+11 + tay + lsr a + lsr a + lsr a + lsr a + ora #'0' + sta SCREEN+8 + tya + and #$0f + ora #'0' + sta SCREEN+9 + + lda CIA2+11 + tay + lsr a + lsr a + lsr a + lsr a + ora #'0' + sta SCREEN+8+40 + tya + and #$0f + ora #'0' + sta SCREEN+9+40 + + jmp loop + + + + + + diff --git a/c64testprgs/testTOD.prg b/c64testprgs/testTOD.prg new file mode 100644 index 0000000000000000000000000000000000000000..0d1a8782cd705edefed3e895c7567c9563eeda01 GIT binary patch literal 245 zcmZ|FF%m&R3428ztiqtoTR&A5>EO_CBP^&!Kie`Ak<<|I-wWZp;u}U1VI^uzuRYQoSl|a v$6g)>8+-ch)+Nho4Mf19WU?(orXyh literal 0 HcmV?d00001 diff --git a/c64testprgs/timer32.prg b/c64testprgs/timer32.prg new file mode 100644 index 0000000000000000000000000000000000000000..40895970a53a6711d6262e720812ef17bf330b29 GIT binary patch literal 170 zcmZSN5a-}xa5mgzYG!O?VC8HCWSE+pG3aveGfa0jT4iXWV_*elnCciXxN(RuOjiI3 zo9GxCK*UXT6pRfR5;)`_5@tFEh7bvJ9R(u;1BN^f4TucTBtwRJ4kIYfRL5|YnF+%j jju*@`4`~36G}Y7r(`HcGT$5oL$0z1aphX4@3=GZygi$LA literal 0 HcmV?d00001 diff --git a/c64testprgs/wizzine.prg b/c64testprgs/wizzine.prg new file mode 100644 index 0000000000000000000000000000000000000000..e467f3b8928e45385aba55c9cc3ed10087590520 GIT binary patch literal 1443 zcmeHGZAer>6rFkN?pxpNZmub5Uyev9VVDx73HFI*EE$5Z8O92M5d=XH3W`QO!Dtf1 zKq)1JhmG*UGQVII1Cca%4oGCO%2FbWk!)0AtGlmxZc#s?Km7{2T!zD)nRB>j=0fXE z>!R3+bM_y~#fO{m+0v4tTzvc-EU#+A5c2Sw|KlHVpdLVd%%uBG@BE@KD9#7@%CS+={eu1w)*poh zN5O*zBa4BN1wV2p&@fwaP(b1s73Eg`LoiYt{D(~KhMLm)9dI1Y5kbohLoLt&HGIZK zK?j_sIs6buV0sGY*#aX#lVe7}v}}&jV6*MdG;Q_^P@{#05@%1Ui?VO>SdZIVfkjQw`NxKKM}jyPr<(t?(iIOf`lRxr~r3R)&wU8NFGG2?qvR5aFK8Zamb zW*$#9Eg=aeib$f#?ZM{}J|f{J_6-bsN1u;ROup3E%&XUPz6Jl=#ihXV`wuI@kDoq&SzY@Y3axL1!;wft zj|NBK@Wy&5^mT3Z%jZuYgDW52F9((u-})DPbFW{`Fzw~!#Q5`3@9;ohuiDeCbamcu zyVufur>XH~Lv79VYgeyauDV!RQSL4)EpZhWo;X&JpLg&;c2?%zj6G?oDZ6$gZ%a&w zcW!amkQ6Ig%;p%AAV3Jek1j`oV2UxDEn=*MY>q9?_=Lo5$vbwXq^9l3*qfP^ec)hT le!;O5g~hIt(lU2>Mdih+%U7;myIxaU|Cjw6PPT12`3>4w*((45 literal 0 HcmV?d00001 diff --git a/c64testprgs/woolonhermind.prg b/c64testprgs/woolonhermind.prg new file mode 100644 index 0000000000000000000000000000000000000000..411b2e27303a5a6f62cda58515fc3a64fc55e30a GIT binary patch literal 8454 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 literal 0 HcmV?d00001 diff --git a/src/main/kotlin/razorvine/c64emu/Screen.kt b/src/main/kotlin/razorvine/c64emu/Screen.kt index 26946d4..3a711cd 100644 --- a/src/main/kotlin/razorvine/c64emu/Screen.kt +++ b/src/main/kotlin/razorvine/c64emu/Screen.kt @@ -233,9 +233,11 @@ internal class Screen(private val chargenData: ByteArray, val ram: MemoryCompone private val coloredCharacterImageCache = mutableMapOf, BufferedImage>() private fun drawColoredChar(x: Int, y: Int, char: Int, color: Int, charsetAddr: Address) { - // The vic 'sees' the charset rom at these addresses: $1000 + $1800, $9000 + $9800 - // so we can use pre-loaded images to efficiently draw the characters. - // If the address is different, the vic takes charset data from RAM instead. + // The vic 'sees' the charset ROM at these addresses: $1000(normal) + $1800(shifted), $9000(normal) + $9800(shifted) + // so we can use pre-loaded images to efficiently draw the default ROM characters. + // If the address is different, the vic takes charset data from RAM instead (thus allowing user defined charsets) + // A user-supplied character set in RAM must begin at an address that is 2048 byte aligned, + // and lies within the same 16K VIC bank as the screen character memory. // TODO: currently custom charsets taken from RAM aren't supported val shifted = charsetAddr and 0x0800 != 0 val charImage = getCharImage(char, color, shifted)