From 3beef5626c1472176dd8ef99026d0a266587831b Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Tue, 19 Jul 2022 10:46:04 -0500 Subject: [PATCH 01/24] c64: updated openroms --- presets/c64/basicheader.dasm | 2 +- res/c64.bios | Bin 20480 -> 20480 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/presets/c64/basicheader.dasm b/presets/c64/basicheader.dasm index 7baf15c7..cb8e8fa4 100644 --- a/presets/c64/basicheader.dasm +++ b/presets/c64/basicheader.dasm @@ -5,6 +5,6 @@ .org $0801 ; start of BASIC program .word BASIC_END, 10 ; Next line and current line number - .byte $9e," 2064",0 ; SYS 2064 + .byte $9e," 2062",0 ; SYS 2062 BASIC_END: .word 0 ; End of program diff --git a/res/c64.bios b/res/c64.bios index cd2e438dd64bddbe6f994e6cef787686b2ca0f35..a8650edd834c9a38fa0d8e3e6654a87567fca7f0 100644 GIT binary patch delta 60 zcmZozz}T>WaYLxQfQxIGo{^z}g^{tIo3oxF!{$`^a8XRrGbRuD8Cy56a|z-G0Qega A`v3p{ delta 60 zcmZozz}T>WaYLxQfQE}}n5&OMu%BZ Date: Tue, 19 Jul 2022 14:53:26 -0500 Subject: [PATCH 02/24] c64: added sid music/sfx, updated memmap, examples --- presets/c64/badspacerobots-c64.multi.bin | Bin 0 -> 10002 bytes presets/c64/c64-sid.cfg | 47 ++++++ presets/c64/climber.c | 26 ++- presets/c64/scroll5.c | 11 +- presets/c64/siddemo.c | 32 ++++ presets/c64/sidmusic1.bin | Bin 0 -> 2930 bytes presets/c64/sidplaysfx.ca65 | 85 ++++++++++ presets/c64/sidplaysfx.h | 7 + presets/c64/sprite_collision.c | 152 ++++++++++++++++++ presets/c64/sprites.c | 28 +++- presets/c64/sprites.h | 5 +- .../c64/viewer-badspacerobots-c64.multi.asm | 72 +++++++++ src/machine/c64.ts | 2 +- src/platform/c64.ts | 11 +- 14 files changed, 461 insertions(+), 17 deletions(-) create mode 100644 presets/c64/badspacerobots-c64.multi.bin create mode 100644 presets/c64/c64-sid.cfg create mode 100644 presets/c64/siddemo.c create mode 100644 presets/c64/sidmusic1.bin create mode 100644 presets/c64/sidplaysfx.ca65 create mode 100644 presets/c64/sidplaysfx.h create mode 100644 presets/c64/sprite_collision.c create mode 100644 presets/c64/viewer-badspacerobots-c64.multi.asm diff --git a/presets/c64/badspacerobots-c64.multi.bin b/presets/c64/badspacerobots-c64.multi.bin new file mode 100644 index 0000000000000000000000000000000000000000..203e9fc4e53c7cfc4410892cd1e9697ed7f515f6 GIT binary patch literal 10002 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 M0(g*{28V?I0z@IcRR910 literal 0 HcmV?d00001 diff --git a/presets/c64/c64-sid.cfg b/presets/c64/c64-sid.cfg new file mode 100644 index 00000000..30b69ac2 --- /dev/null +++ b/presets/c64/c64-sid.cfg @@ -0,0 +1,47 @@ +FEATURES { + STARTADDRESS: default = $0801; +} +SYMBOLS { + __LOADADDR__: type = import; + __EXEHDR__: type = import; + __STACKSIZE__: type = weak, value = $0800; # 2k stack + __HIMEM__: type = weak, value = $D000; +} +MEMORY { + ZP: file = "", define = yes, start = $0002, size = $001A; + LOADADDR: file = %O, start = %S - 2, size = $0002; + HEADER: file = %O, define = yes, start = %S, size = $000D; + LOWMAIN: file = %O, define = yes, start = __HEADER_LAST__, size = $1000 - __HEADER_LAST__, fill = yes; + SIDFILE: file = %O, define = yes, start = $1000, size = $1000, fill = yes; + MAIN: file = %O, define = yes, start = $2000, size = __HIMEM__ - $2000; + BSS: file = "", start = __ONCE_RUN__, size = __HIMEM__ - __STACKSIZE__ - __ONCE_RUN__; +} +SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + LOADADDR: load = LOADADDR, type = ro; + EXEHDR: load = HEADER, type = ro; + STARTUP: load = LOWMAIN, type = ro; + LOWCODE: load = LOWMAIN, type = ro, optional = yes; + SIDFILE: load = SIDFILE, type = ro, optional = yes; + CODE: load = MAIN, type = ro; + RODATA: load = MAIN, type = ro; + DATA: load = MAIN, type = rw; + INIT: load = MAIN, type = rw; + ONCE: load = MAIN, type = ro, define = yes; + BSS: load = BSS, type = bss, define = yes; +} +FEATURES { + CONDES: type = constructor, + label = __CONSTRUCTOR_TABLE__, + count = __CONSTRUCTOR_COUNT__, + segment = ONCE; + CONDES: type = destructor, + label = __DESTRUCTOR_TABLE__, + count = __DESTRUCTOR_COUNT__, + segment = RODATA; + CONDES: type = interruptor, + label = __INTERRUPTOR_TABLE__, + count = __INTERRUPTOR_COUNT__, + segment = RODATA, + import = __CALLIRQ__; +} diff --git a/presets/c64/climber.c b/presets/c64/climber.c index 5f072a35..1cf0c3e2 100644 --- a/presets/c64/climber.c +++ b/presets/c64/climber.c @@ -17,8 +17,18 @@ #include "sprites.h" //#link "sprites.c" -// indices of sound effects (0..3) -typedef enum { SND_START, SND_HIT, SND_COIN, SND_JUMP } SFXIndex; +//#resource "c64-sid.cfg" +#define CFGFILE c64-sid.cfg + +//#resource "sidmusic1.bin" +//#link "sidplaysfx.ca65" +#include "sidplaysfx.h" + +// indices of sound effects +#define SND_JUMP 0 +#define SND_HIT 2 +#define SND_COIN 1 +#define SND_FALL 3 ///// DEFINES @@ -469,7 +479,7 @@ void draw_actor(byte i) { void refresh_actors() { byte i; yscroll = BOTTOM_Y + scroll_fine_y + (START_ORIGIN_Y - origin_y)*8; - sprite_clear(); + sprshad.spr_ena = 0; // make all sprites invisible for (i=0; iyvel = 15; if (joystick & JOY_LEFT_MASK) actor->xvel = -1; if (joystick & JOY_RIGHT_MASK) actor->xvel = 1; + if (scroll) sid_sfx(SND_JUMP); } else if (joystick & JOY_LEFT_MASK) { actor->x--; actor->dir = 1; @@ -605,6 +616,7 @@ void move_actor(struct Actor* actor, byte joystick, bool scroll) { if (actor->state == WALKING && is_in_gap(actor->x, floors[actor->level].gap)) { fall_down(actor); + if (scroll) sid_sfx(SND_FALL); } } @@ -626,11 +638,11 @@ void pickup_object(Actor* actor) { if (objtype == ITEM_MINE) { // we hit a mine, fall down fall_down(actor); - //sfx_play(SND_HIT,0); + sid_sfx(SND_HIT); } else { // we picked up an object, add to score //score = bcd_add(score, 1); - //sfx_play(SND_COIN,0); + sid_sfx(SND_COIN); } } } @@ -717,6 +729,9 @@ void play_scene() { create_actors_on_floor(2); refresh_screen(); + sid_init(1); + sid_start(); + while (actors[0].level != MAX_FLOORS-1) { refresh_actors(); move_player(); @@ -728,6 +743,7 @@ void play_scene() { if (VIC.spr_coll & 0x01) { if (actors[0].level > 0 && check_collision(&actors[0])) { fall_down(&actors[0]); + sid_sfx(SND_HIT); } } if (swap_needed) sprite_update(hidbuf); diff --git a/presets/c64/scroll5.c b/presets/c64/scroll5.c index 1d84bfb4..8adfd32b 100644 --- a/presets/c64/scroll5.c +++ b/presets/c64/scroll5.c @@ -73,13 +73,16 @@ void main(void) { // infinite loop while (1) { + static char speed = 1; // get joystick bits char joy = joy_read(0); + // speed up scrolling while button pressed + speed = JOY_BTN_1(joy) ? 2 : 1; // move sprite based on arrow keys - if (JOY_LEFT(joy)) scroll_horiz(-1); - if (JOY_UP(joy)) scroll_vert(-1); - if (JOY_RIGHT(joy)) scroll_horiz(1); - if (JOY_DOWN(joy)) scroll_vert(1); + if (JOY_LEFT(joy)) scroll_horiz(-speed); + if (JOY_UP(joy)) scroll_vert(-speed); + if (JOY_RIGHT(joy)) scroll_horiz(speed); + if (JOY_DOWN(joy)) scroll_vert(speed); // animate sprite in shadow sprite ram sprite_draw(0, n++, 70, 32); // wait for vblank diff --git a/presets/c64/siddemo.c b/presets/c64/siddemo.c new file mode 100644 index 00000000..31d0b238 --- /dev/null +++ b/presets/c64/siddemo.c @@ -0,0 +1,32 @@ + +#include +#include +#include +#include +#include + +//#resource "c64-sid.cfg" +#define CFGFILE c64-sid.cfg + +//#resource "sidmusic1.bin" +//#link "sidplaysfx.ca65" +#include "sidplaysfx.h" + + +void main(void) { + clrscr(); + cursor(0); + joy_install(joy_static_stddrv); + sid_init(0); + sid_start(); + printf("\r\nSID file loaded at $1000\r\n"); + printf("\r\nMove joystick for SFX\r\n"); + while (1) { + char joy = joy_read(0); + if (joy) { + sid_sfx(joy & 3); + } + waitvsync(); + //sid_update(); + } +} diff --git a/presets/c64/sidmusic1.bin b/presets/c64/sidmusic1.bin new file mode 100644 index 0000000000000000000000000000000000000000..3d1d6bfc96d9862ef2834f5eab0836be1f36c526 GIT binary patch literal 2930 zcmb7D3rt(r89shozX)*c92=8BV+!G+HWAG_67uSG-ByG+!C~nm*|a)sP{XQ5qXdVf zonj~u9CMvJ2hTvbRtQ=I*^8)KS63V>+nOm%>gK7=q*NpANa#wYrPtdiB{9DHk0IhJ05@#(t zGKxeu?h`j+Qi{bY>=vuB`yA@oXXKwYy7^t0-;4RLVz={`rcu4i!b=;^_gqp~^3xI$t3c;a{vxC?{-ZY;X6^M@k4%IRAQ|F-{F8=dC#U zM>s5&3paYt4D*j(Hj5q{ebX$qU{Z!{9P8{}xwsjx#!_MQZ)Qmap`x?q%!Sp~=z0tF zTW5*q6S!ODcomN3v;6l=;~R1GBTHw>`7+Bg->SnECl()E^c02%5WS7XgBUy}l#*k7 z3zoJNmSCxhY{k&cLl#yaJ#7&iurqCfLP-O*9y@JmM8Mnti`;1A{eFYh77R6xJ8|>{ z+9f~jQVH!6Cs-%k!UGeRh4o}Djw>&vAi!EIIpVc2Z)o6zdkjywDsshAEYXIFWq7QV z@kwrmK1$r2_8R+;}4M*EHVk=!J;MswTjAws7k<_ z7EuBox~NEy&3M}$EUFW3(uzA%;}XW-beqRDAEe*phznh)&K6DS603A z`6H)>-bqL~>vlJNC-w<;92xyX!T!Oib+7-Xyz`U#pKbhc^_Bf|kvhX~huaSyYC84i zovjh``KQ#sk5A#3CXa2cc!JlxJ#?k~y?2tWUpcvoZF<~SclOAXbRp+UHd*lxQ7(## ziW-Dr7>!1w)#`M5y}^*RB0D=Lmo=JJVsoB#)#}1Ewg*efDjr(@$fFxKZ?`|WV|V?t zUwh%u;g;9m@Shp{?vJAH#wTxoF8}GS@!<`dwm<$R&FpI@6&u!UQ9?r&W7u-=#ajI3Ig)r+E3D?dO=MvasT zwc_IOv)`Y&*m%+T+G`hgDAf8DIc94?5nQlXp~*toxi}v^fQk{FN>cZ2t2k9VWjSy?H2%WXEg%4URUtE9pijPAFu$x{=&1w{b9Bl`PBJw#%pu>Q<;!OLx_w6l*JI z-Bu1EMyJck(Y+5#CnJSgqtDW>$X#hPnoQVi$)j3EN~P9tEjycK4F*^rF7K|(h>k@@ z`Kt>HWwff`fi*HJRmqAnSmm&6#WE@?kBa1y!ZmHqTI2at>m4G#^IA=n`o{iFhyfiQ{9hk^o${WTy2g&+YA z_K@vxCiZcP>3YQiQgh+i*q@P>>+0ybi8NgE0&{|Bnh5A-(9QpPZuYb;FdanWA)s49 zw=SPa2gxu5sp_rPPFj*@c3O=8zxe)gLk}<^%GxSQ2K_ zLRwmwHlk^vn--=;<7sLBPp-AuLp&a)9i~S&9>$|N3UmBtu08XWAY~oX=K4!VvOU?E zglE}3ADgGkx3rLw>rM*EU@}0z^1#yNzyDRo@u!7gZ>X=ocP1cwJ9G=|JG#1kexUgo z_%J{jY7y=~JJ>&?U8EFT)BYUS%~lF18yX&`^lL(^%*!JSGEAB zj_DKRBoRKQ|6K68bsS)dy82yy5+LC@bznYrH#-FH-bcDVQ_~8;wTtj1_;D{__cZ+* hrr-~_5F_B6hMVhyLY*O4mj&-|7Ru!Pyui<*zXQQkl6n9D literal 0 HcmV?d00001 diff --git a/presets/c64/sidplaysfx.ca65 b/presets/c64/sidplaysfx.ca65 new file mode 100644 index 00000000..bc114310 --- /dev/null +++ b/presets/c64/sidplaysfx.ca65 @@ -0,0 +1,85 @@ + +; music and SFX from GoatTracker 2 sample files +; http://sourceforge.net/projects/goattracker2 + +.segment "SIDFILE" + +.incbin "sidmusic1.bin" + +.segment "LOWCODE" + +.global _sid_init, _sid_update, _sid_sfx +.global _sid_start + +_sid_init: + jmp $1000 + +_sid_update: + jmp $1003 + +_sid_sfx: + tax + lda sfxtbllo,x ;Address in A,Y + ldy sfxtblhi,x + ldx #$0e ;Channel index in X + jmp $1006 ;(0, 7 or 14) + +SID_IRQ: + jsr $1003 + ASL $D019 ; acknowledge the interrupt by clearing the VIC's interrupt flag + JMP $EA31 ; jump into KERNAL's standard interrupt service routine to handle keyboard scan, cursor display etc. + +_sid_start: + SEI ; set interrupt bit, make the CPU ignore interrupt requests + LDA #%01111111 ; switch off interrupt signals from CIA-1 + STA $DC0D + + AND $D011 ; clear most significant bit of VIC's raster register + STA $D011 + + LDA $DC0D ; acknowledge pending interrupts from CIA-1 + LDA $DD0D ; acknowledge pending interrupts from CIA-2 + + LDA #210 ; set rasterline where interrupt shall occur + STA $D012 + + LDA #SID_IRQ + STA $0315 + + LDA #%00000001 ; enable raster interrupt signals from VIC + STA $D01A + + CLI ; clear interrupt flag, allowing the CPU to respond to interrupt requests + RTS + + +sfxtbllo: .byte arpeggio2 + .byte >arpeggio1 + .byte >gunshot + .byte >explosion + +arpeggio2: + .byte $00,$89,$04,$A2,$41,$A2,$A2,$A6,$A6,$A6,$40,$A9,$A9,$A9,$A2,$A2 + .byte $A2,$A6,$A6,$A6,$A9,$A9,$A9,$A2,$A2,$A2,$A6,$A6,$A6,$A9,$A9,$A9 + .byte $A2,$A2,$A2,$A6,$A6,$A6,$A9,$A9,$A9,$00 + +arpeggio1: + .byte $0A,$00,$02,$A0,$41,$A0,$A0,$A4,$A4,$A4,$A7,$A7,$A7,$A0,$A0,$A0 + .byte $A4,$A4,$A4,$A7,$A7,$A7,$A0,$A0,$A0,$A4,$A4,$A4,$A7,$A7,$A7,$A0 + .byte $A0,$A0,$A4,$A4,$A4,$A7,$A7,$A7,$00 + +gunshot: + .byte $00,$F9,$08,$C4,$81,$A8,$41,$C0,$81,$BE,$BC,$80,$BA,$B8,$B6,$B4 + .byte $B2,$B0,$AE,$AC,$AA,$A8,$A6,$A4,$A2,$A0,$9E,$9C,$9A,$98,$96,$94 + .byte $92,$90,$00 + +explosion: + .byte $00,$FA,$08,$B8,$81,$A4,$41,$A0,$B4,$81,$98,$92,$9C,$90,$95,$9E + .byte $92,$80,$94,$8F,$8E,$8D,$8C,$8B,$8A,$89,$88,$87,$86,$84,$00 diff --git a/presets/c64/sidplaysfx.h b/presets/c64/sidplaysfx.h new file mode 100644 index 00000000..83329d0a --- /dev/null +++ b/presets/c64/sidplaysfx.h @@ -0,0 +1,7 @@ + +extern void sid_init(char musicindex); +extern void sid_update(void); +extern void sid_sfx(char sfxindex); + +extern void sid_start(void); +extern void sid_stop(void); diff --git a/presets/c64/sprite_collision.c b/presets/c64/sprite_collision.c new file mode 100644 index 00000000..866ac4f2 --- /dev/null +++ b/presets/c64/sprite_collision.c @@ -0,0 +1,152 @@ + +#include +#include +#include +#include +#include +#include +#include + +#include "common.h" +//#link "common.c" + +#include "sprites.h" +//#link "sprites.c" + +/*{w:12,h:21,bpp:2,brev:1}*/ +const char SPRITEMC[3*21] = { + 0x00,0xAA,0x80,0x02,0xAA,0xA0,0x0A,0xAA,0xA8, + 0x0A,0xAE,0xA8,0x0A,0xBB,0xA8,0x0A,0xBA,0xA8, + 0x0A,0xBB,0xA8,0x0A,0xAE,0xA8,0x0A,0xAA,0xA8, + 0x09,0xAA,0x98,0x08,0x6A,0x48,0x08,0x1D,0x08, + 0x02,0x0C,0x20,0x02,0x0C,0x20,0x02,0x0C,0x20, + 0x00,0x8C,0x80,0x00,0x8C,0x80,0x00,0x55,0x40, + 0x00,0x77,0x40,0x00,0x5D,0x40,0x00,0x15,0x00 +}; + +int xpos[8]; +int ypos[8]; +int xvel[8]; +int yvel[8]; + +void init_sprites(void) { + byte i; + // setup sprite positions + for (i=0; i<8; i++) { + xpos[i] = ((i & 3) * 0x2000) - 0x1000; + ypos[i] = (i * 0x1000) - 0x3000; + sprshad.spr_color[i] = i | 8; + } +} + +void move_sprites(void) { + byte i; + for (i=0; i<8; i++) { + //VIC.bordercolor = i; + sprite_draw(i, (xpos[i]>>7)+0x80, (ypos[i]>>8)+0x80, 32); + // update position + xpos[i] += xvel[i]; + ypos[i] += yvel[i]; + } +} + +void update_sprites(void) { + byte i; + for (i=0; i<8; i++) { + // update velocity + xvel[i] -= xpos[i] >> 12; + yvel[i] -= ypos[i] >> 12; + } +} + +void collide_sprites(byte spr_coll) { + byte i; + byte mask = 1; + // exit if no collisions + if (!spr_coll) return; + // iterate all sprites that have their flag set + for (i=0; i<8; i++, mask<<=1) { + //VIC.bordercolor = i; + if (spr_coll & mask) { + // find the first sprite that intersects + byte j = sprite_get_closest_collision(i, spr_coll); + // returns 0..7 if a sprite was found + if (j < 8) { + xvel[i] = (xpos[i] - xpos[j]) >> 4; + yvel[i] = (ypos[i] - ypos[j]) >> 4; + } + } + } +} + +void iterategame1(void) { + byte spr_coll; + + // wait for vblank + wait_vblank(); + // grab and reset sprite-sprite collision flags + spr_coll = VIC.spr_coll; + // then update sprite registers from shadow RAM + sprite_update(DEFAULT_SCREEN); + // draw sprites into shadow ram + move_sprites(); + // and update velocity and position + update_sprites(); + // if any flags are set in the collision register, + // process sprite collisions + collide_sprites(spr_coll); +} + +void iterategame2(void) { + byte spr_coll; + + // FIRST FRAME: move and update velocity + wait_vblank(); + // grab and reset sprite-sprite collision flags + spr_coll = VIC.spr_coll; + // then update sprite registers from shadow RAM + sprite_update(DEFAULT_SCREEN); + // draw sprites into shadow ram + // and update posiitons + move_sprites(); + // and update velocities + update_sprites(); + + // SECOND FRAME: move and process collisions + wait_vblank(); + // grab and reset sprite-sprite collision flags + // combine with previous frame flags + spr_coll |= VIC.spr_coll; + // then update sprite registers from shadow RAM + sprite_update(DEFAULT_SCREEN); + // draw sprites into shadow ram + // and update posiitons + move_sprites(); + // if any flags are set in the collision register, + // process sprite collisions + collide_sprites(spr_coll); +} + +void main(void) { + + clrscr(); + VIC.bordercolor = 0; + + // setup sprite library and copy sprite to VIC bank + sprite_clear(); + sprite_shape((void*)0x400, 32/2, SPRITEMC); + + // set colors + sprshad.spr_mcolor = 0xff; + sprshad.spr_mcolor0 = 4; + sprshad.spr_mcolor1 = 7; + + // set sprite initial positions + init_sprites(); + + // game loop + while (1) { + iterategame2(); + } +} + diff --git a/presets/c64/sprites.c b/presets/c64/sprites.c index 541bd14b..07eaed11 100644 --- a/presets/c64/sprites.c +++ b/presets/c64/sprites.c @@ -4,6 +4,10 @@ SpriteShadow sprshad; +void sprite_clear(void) { + memset(&sprshad, 0, sizeof(sprshad)); +} + void sprite_update(char* vicbank) { memcpy(vicbank + 0x3f8, sprshad.spr_shapes, 8); VIC.spr_ena = sprshad.spr_ena; @@ -38,7 +42,25 @@ void sprite_draw(byte i, word x, byte y, byte shape) { sprshad.spr_shapes[i] = shape; } -void sprite_clear(void) { - sprshad.spr_ena = 0; +byte sprite_get_closest_collision(byte i, byte spr_coll) { + byte j; + byte jmask = 1; + byte dx,dy; + if (spr_coll & BITS[i]) { + spr_coll ^= BITS[i]; + for (j=0; j<8; j++, jmask<<=1) { + if (spr_coll & jmask) { + // TODO? + dx = sprshad.spr_pos[i].x - sprshad.spr_pos[j].x + 24; + if (dx < 48) { + dy = sprshad.spr_pos[i].y - sprshad.spr_pos[j].y + 21; + if (dy < 42) { + return j; + } + } + } + } + } else { + return 0xff; + } } - diff --git a/presets/c64/sprites.h b/presets/c64/sprites.h index c75c007e..90308c88 100644 --- a/presets/c64/sprites.h +++ b/presets/c64/sprites.h @@ -3,6 +3,8 @@ #include "common.h" +#define DEFAULT_SCREEN ((void*)0x400) + typedef struct { byte spr_ena; /* Enable sprites */ byte spr_hi_x; /* High bits of X coordinate */ @@ -22,9 +24,10 @@ typedef struct { extern SpriteShadow sprshad; +void sprite_clear(void); void sprite_update(char* screenram); void sprite_shape(char* vicbank, byte index, const char* sprite_data); void sprite_draw(byte i, word x, byte y, byte shape); -void sprite_clear(void); +byte sprite_get_closest_collision(byte i, byte spr_coll); #endif diff --git a/presets/c64/viewer-badspacerobots-c64.multi.asm b/presets/c64/viewer-badspacerobots-c64.multi.asm new file mode 100644 index 00000000..28fea7ca --- /dev/null +++ b/presets/c64/viewer-badspacerobots-c64.multi.asm @@ -0,0 +1,72 @@ + + processor 6502 + include "basicheader.dasm" + +Src equ $02 +Dest equ $04 + +Start: + lda #$38 ; 25 rows, on, bitmap + sta $d011 ; VIC control #1 + lda #$18 ; 40 column, multicolor + sta $d016 ; VIC control #2 + lda #$02 + sta $dd00 ; set VIC bank ($4000-$7FFF) + lda #$80 + sta $d018 ; set VIC screen to $6000 + lda XtraData+0 + sta $d020 ; border + sta $d021 ; background + lda #0 + sta Dest +; copy char memory + lda #CharData + sta Src+1 + lda #$40 + sta Dest+1 + ldx #$20 + jsr CopyMem +; copy screen memory + lda #ScreenData + sta Src+1 + lda #$60 + sta Dest+1 + ldx #$04 + jsr CopyMem +; copy color RAM + lda #ColorData + sta Src+1 + lda #$d8 + sta Dest+1 + ldx #4 + jsr CopyMem +; infinite loop + jmp . + +; copy data from Src to Dest +; X = number of bytes * 256 +CopyMem + ldy #0 +.Loop + lda (Src),y + sta (Dest),y + iny + bne .Loop + inc Src+1 + inc Dest+1 + dex + bne .Loop + rts + +; bitmap data +CharData equ . +ScreenData equ CharData+8000 +ColorData equ ScreenData+1000 +XtraData equ ColorData+1000 + incbin "badspacerobots-c64.multi.bin" diff --git a/src/machine/c64.ts b/src/machine/c64.ts index cfc8ae6c..84adb4fc 100644 --- a/src/machine/c64.ts +++ b/src/machine/c64.ts @@ -122,7 +122,7 @@ export class C64_WASMMachine extends BaseWASMMachine implements Machine, Probeab this.exports.machine_load_state(this.sys, this.stateptr); } getVideoParams() { - return {width:392, height:272, overscan:true, videoFrequency:50}; + return {width:392, height:272, overscan:true, videoFrequency:50, aspect:392/272*0.9365}; } setKeyInput(key: number, code: number, flags: number): void { // TODO: handle shifted keys diff --git a/src/platform/c64.ts b/src/platform/c64.ts index c3bcada3..9518d9d2 100644 --- a/src/platform/c64.ts +++ b/src/platform/c64.ts @@ -16,18 +16,23 @@ const C64_PRESETS = [ {id:'scroll3.c', name:'Scrolling 3 (C)'}, {id:'scroll4.c', name:'Scrolling 4 (C)'}, {id:'scroll5.c', name:'Scrolling 5 (C)'}, - {id:'climber.c', name:'Climber Game (C)'}, + {id:'sprite_collision.c', name:'Sprite Collision (C)'}, {id:'multilines.c', name:'Multicolor Lines+Flood Fill (C)'}, - {id:'sidtune.dasm', name:'SID Tune (ASM)'}, {id:'musicplayer.c', name:'Music Player (C)'}, + {id:'sidtune.dasm', name:'Tiny SID Tune (ASM)'}, + {id:'siddemo.c', name:'SID Demo (C)'}, + {id:'climber.c', name:'Climber Game (C)'}, ]; const C64_MEMORY_MAP = { main:[ {name:'6510 Registers',start:0x0, size:0x2,type:'io'}, + {name:'BIOS Reserved', start:0x200, size:0xa7}, + {name:'Default Screen RAM', start:0x400, size:1024,type:'ram'}, //{name:'RAM', start:0x2, size:0x7ffe,type:'ram'}, {name:'Cartridge ROM',start:0x8000,size:0x2000,type:'rom'}, {name:'BASIC ROM', start:0xa000,size:0x2000,type:'rom'}, - {name:'RAM', start:0xc000,size:0x1000,type:'ram'}, + {name:'Upper RAM', start:0xc000,size:0x1000,type:'ram'}, + {name:'Character ROM',start:0xd000,size:0x1000,type:'rom'}, {name:'VIC-II I/O', start:0xd000,size:0x0400,type:'io'}, {name:'SID', start:0xd400,size:0x0400,type:'io'}, {name:'Color RAM', start:0xd800,size:0x0400,type:'io'}, From a611697819e5acb49981408f14636d45f98c5d15 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Sun, 24 Jul 2022 11:16:14 -0500 Subject: [PATCH 03/24] wiz: updated compiler --- src/worker/fs/fswiz.js.metadata | 2 +- src/worker/wasm/wiz.wasm | Bin 576038 -> 580073 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/worker/fs/fswiz.js.metadata b/src/worker/fs/fswiz.js.metadata index 77d4ea36..97cd200b 100644 --- a/src/worker/fs/fswiz.js.metadata +++ b/src/worker/fs/fswiz.js.metadata @@ -1 +1 @@ -{"files":[{"filename":"/common/snes/icd2.wiz","start":0,"end":2959},{"filename":"/common/snes/img2snes.py","start":2959,"end":5920},{"filename":"/common/snes/minirpg_sprites.png","start":5920,"end":7519},{"filename":"/common/snes/hello_tiles_compact.png","start":7519,"end":8122},{"filename":"/common/snes/hello_tiles_compact.chr","start":8122,"end":9658},{"filename":"/common/snes/hello_tiles.png","start":9658,"end":10295},{"filename":"/common/snes/hello_tiles.chr","start":10295,"end":18487},{"filename":"/common/snes/snes.wiz","start":18487,"end":42074},{"filename":"/common/snes/minirpg_sprites.chr","start":42074,"end":50266},{"filename":"/common/gg/sms.wiz","start":50266,"end":56495},{"filename":"/common/gg/minirpg_sprites.png","start":56495,"end":58094},{"filename":"/common/gg/hello_tiles.png","start":58094,"end":58731},{"filename":"/common/gg/img2gg8.py","start":58731,"end":61609},{"filename":"/common/gg/hello_tiles.chr","start":61609,"end":69801},{"filename":"/common/gg/img2gg16.py","start":69801,"end":73816},{"filename":"/common/gg/minirpg_sprites.chr","start":73816,"end":82008},{"filename":"/common/nes/scroller_tiles.chr","start":82008,"end":86104},{"filename":"/common/nes/minirpg_sprites.png","start":86104,"end":87701},{"filename":"/common/nes/hello_tiles.png","start":87701,"end":88138},{"filename":"/common/nes/img2chr.py","start":88138,"end":90528},{"filename":"/common/nes/hello_tiles.chr","start":90528,"end":94624},{"filename":"/common/nes/scroller_tiles.png","start":94624,"end":95467},{"filename":"/common/nes/bobble_tiles.png","start":95467,"end":96149},{"filename":"/common/nes/nes.wiz","start":96149,"end":115238},{"filename":"/common/nes/bobble_tiles.chr","start":115238,"end":119334},{"filename":"/common/nes/minirpg_sprites.chr","start":119334,"end":123430},{"filename":"/common/msx/img2msx16.py","start":123430,"end":125505},{"filename":"/common/msx/hello_tiles.png","start":125505,"end":125998},{"filename":"/common/msx/hello_tiles.chr","start":125998,"end":128046},{"filename":"/common/msx/img2msx8.py","start":128046,"end":130360},{"filename":"/common/msx/msx.wiz","start":130360,"end":185578},{"filename":"/common/pce/pce.wiz","start":185578,"end":198258},{"filename":"/common/pce/minirpg_sprites.png","start":198258,"end":199857},{"filename":"/common/pce/hello_tiles.png","start":199857,"end":200494},{"filename":"/common/pce/hello_tiles.chr","start":200494,"end":208686},{"filename":"/common/pce/img2pce8.py","start":208686,"end":211606},{"filename":"/common/pce/minirpg_sprites.chr","start":211606,"end":219798},{"filename":"/common/gb/bcd.wiz","start":219798,"end":222637},{"filename":"/common/gb/joy.wiz","start":222637,"end":225456},{"filename":"/common/gb/gb.wiz","start":225456,"end":242454},{"filename":"/common/gb/oam.wiz","start":242454,"end":243780},{"filename":"/common/gb/math.wiz","start":243780,"end":246131},{"filename":"/common/gb/sgb_util.wiz","start":246131,"end":249318},{"filename":"/common/gb/memory.wiz","start":249318,"end":250760},{"filename":"/common/gb/gbc_util.wiz","start":250760,"end":251810},{"filename":"/common/2600/vcs.wiz","start":251810,"end":257710},{"filename":"/common/spc/spc.wiz","start":257710,"end":264462}],"remote_package_size":264462,"package_uuid":"f357339c-3604-4f7c-b827-41c09e93a3b5"} \ No newline at end of file +{"files":[{"filename":"/common/snes/icd2.wiz","start":0,"end":2959},{"filename":"/common/snes/img2snes.py","start":2959,"end":5920},{"filename":"/common/snes/minirpg_sprites.png","start":5920,"end":7519},{"filename":"/common/snes/hello_tiles_compact.png","start":7519,"end":8122},{"filename":"/common/snes/hello_tiles_compact.chr","start":8122,"end":9658},{"filename":"/common/snes/hello_tiles.png","start":9658,"end":10295},{"filename":"/common/snes/hello_tiles.chr","start":10295,"end":18487},{"filename":"/common/snes/snes.wiz","start":18487,"end":42074},{"filename":"/common/snes/minirpg_sprites.chr","start":42074,"end":50266},{"filename":"/common/gg/sms.wiz","start":50266,"end":56495},{"filename":"/common/gg/minirpg_sprites.png","start":56495,"end":58094},{"filename":"/common/gg/hello_tiles.png","start":58094,"end":58731},{"filename":"/common/gg/img2gg8.py","start":58731,"end":61609},{"filename":"/common/gg/hello_tiles.chr","start":61609,"end":69801},{"filename":"/common/gg/img2gg16.py","start":69801,"end":73816},{"filename":"/common/gg/minirpg_sprites.chr","start":73816,"end":82008},{"filename":"/common/nes/scroller_tiles.chr","start":82008,"end":86104},{"filename":"/common/nes/minirpg_sprites.png","start":86104,"end":87701},{"filename":"/common/nes/hello_tiles.png","start":87701,"end":88138},{"filename":"/common/nes/img2chr.py","start":88138,"end":90528},{"filename":"/common/nes/hello_tiles.chr","start":90528,"end":94624},{"filename":"/common/nes/scroller_tiles.png","start":94624,"end":95467},{"filename":"/common/nes/bobble_tiles.png","start":95467,"end":96149},{"filename":"/common/nes/nes.wiz","start":96149,"end":115238},{"filename":"/common/nes/bobble_tiles.chr","start":115238,"end":119334},{"filename":"/common/nes/minirpg_sprites.chr","start":119334,"end":123430},{"filename":"/common/msx/img2msx16.py","start":123430,"end":125505},{"filename":"/common/msx/hello_tiles.png","start":125505,"end":125998},{"filename":"/common/msx/hello_tiles.chr","start":125998,"end":128046},{"filename":"/common/msx/img2msx8.py","start":128046,"end":130360},{"filename":"/common/msx/msx.wiz","start":130360,"end":185578},{"filename":"/common/pce/pce.wiz","start":185578,"end":198258},{"filename":"/common/pce/minirpg_sprites.png","start":198258,"end":199857},{"filename":"/common/pce/hello_tiles.png","start":199857,"end":200494},{"filename":"/common/pce/hello_tiles.chr","start":200494,"end":208686},{"filename":"/common/pce/img2pce8.py","start":208686,"end":211606},{"filename":"/common/pce/minirpg_sprites.chr","start":211606,"end":219798},{"filename":"/common/gb/bcd.wiz","start":219798,"end":222637},{"filename":"/common/gb/joy.wiz","start":222637,"end":225456},{"filename":"/common/gb/gb.wiz","start":225456,"end":242454},{"filename":"/common/gb/oam.wiz","start":242454,"end":243780},{"filename":"/common/gb/math.wiz","start":243780,"end":246131},{"filename":"/common/gb/sgb_util.wiz","start":246131,"end":249318},{"filename":"/common/gb/memory.wiz","start":249318,"end":250760},{"filename":"/common/gb/gbc_util.wiz","start":250760,"end":251810},{"filename":"/common/2600/vcs.wiz","start":251810,"end":257710},{"filename":"/common/spc/spc.wiz","start":257710,"end":264462}],"remote_package_size":264462,"package_uuid":"3682f967-645c-4761-b3e6-5a07a4ad8a35"} \ No newline at end of file diff --git a/src/worker/wasm/wiz.wasm b/src/worker/wasm/wiz.wasm index ed0b551d09d1937b2e70fabb9268ef3e3a34985d..a3cf17cc6520fb4da3e902af29695bb0590c68d9 100644 GIT binary patch delta 169567 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%0A@B9X%&`+u$&1j=LNQdlmM1ejubeu0&Hgk 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 B<9Pr8 From c4fcf51e5545e485e4263e253defc28f0c72fd97 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Tue, 26 Jul 2022 18:43:29 -0500 Subject: [PATCH 04/24] c64: fixed zp/stack ram debug --- src/machine/c64.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/machine/c64.ts b/src/machine/c64.ts index 84adb4fc..9f5e32a0 100644 --- a/src/machine/c64.ts +++ b/src/machine/c64.ts @@ -107,14 +107,12 @@ export class C64_WASMMachine extends BaseWASMMachine implements Machine, Probeab } saveState() { this.exports.machine_save_state(this.sys, this.stateptr); - /* for (var i=0; i Date: Wed, 20 Jul 2022 14:32:47 -0500 Subject: [PATCH 05/24] c64: update presets --- presets/c64/c64-sid.cfg | 4 +- presets/c64/climber.c | 33 ++++-- presets/c64/hello.dasm | 1 + presets/c64/rasterirq.ca65 | 86 +++++++++++++++ presets/c64/rasterirq.h | 19 ++++ presets/c64/scroll4.c | 187 +++++++++------------------------ presets/c64/scroll5.c | 81 ++++++++++---- presets/c64/scrolling.c | 107 ++++++++++++++++--- presets/c64/scrolling.h | 2 +- presets/c64/siddemo.c | 3 +- presets/c64/sidplaysfx.ca65 | 46 +++----- presets/c64/sprite_collision.c | 8 +- presets/c64/sprites.c | 10 +- presets/c64/sprites.h | 18 ++-- presets/c64/spritesinborder.c | 69 ++++++++++++ src/worker/tools/cc65.ts | 4 +- 16 files changed, 437 insertions(+), 241 deletions(-) create mode 100644 presets/c64/rasterirq.ca65 create mode 100644 presets/c64/rasterirq.h create mode 100644 presets/c64/spritesinborder.c diff --git a/presets/c64/c64-sid.cfg b/presets/c64/c64-sid.cfg index 30b69ac2..a3c23039 100644 --- a/presets/c64/c64-sid.cfg +++ b/presets/c64/c64-sid.cfg @@ -5,7 +5,7 @@ SYMBOLS { __LOADADDR__: type = import; __EXEHDR__: type = import; __STACKSIZE__: type = weak, value = $0800; # 2k stack - __HIMEM__: type = weak, value = $D000; + __HIMEM__: type = weak, value = $8000; } MEMORY { ZP: file = "", define = yes, start = $0002, size = $001A; @@ -15,6 +15,7 @@ MEMORY { SIDFILE: file = %O, define = yes, start = $1000, size = $1000, fill = yes; MAIN: file = %O, define = yes, start = $2000, size = __HIMEM__ - $2000; BSS: file = "", start = __ONCE_RUN__, size = __HIMEM__ - __STACKSIZE__ - __ONCE_RUN__; + VICBANK: file = %O, start = $8000, size = $4000; } SEGMENTS { ZEROPAGE: load = ZP, type = zp; @@ -29,6 +30,7 @@ SEGMENTS { INIT: load = MAIN, type = rw; ONCE: load = MAIN, type = ro, define = yes; BSS: load = BSS, type = bss, define = yes; + VICBANK: load = MAIN, type = ro, optional = yes; } FEATURES { CONDES: type = constructor, diff --git a/presets/c64/climber.c b/presets/c64/climber.c index 1cf0c3e2..fc775437 100644 --- a/presets/c64/climber.c +++ b/presets/c64/climber.c @@ -5,6 +5,16 @@ #include #include +//#resource "c64-sid.cfg" +#define CFGFILE c64-sid.cfg + +//#resource "sidmusic1.bin" +//#link "sidplaysfx.ca65" +#include "sidplaysfx.h" + +//#link "rasterirq.ca65" +#include "rasterirq.h" + #include "bcd.h" //#link "bcd.c" @@ -17,13 +27,6 @@ #include "sprites.h" //#link "sprites.c" -//#resource "c64-sid.cfg" -#define CFGFILE c64-sid.cfg - -//#resource "sidmusic1.bin" -//#link "sidplaysfx.ca65" -#include "sidplaysfx.h" - // indices of sound effects #define SND_JUMP 0 #define SND_HIT 2 @@ -755,6 +758,16 @@ void play_scene() { blimp_pickup_scene(); } +// main display list +void game_displaylist(void) { + VIC.bordercolor = 2; + sid_update(); + VIC.bordercolor = 0; +// DLIST_NEXT(42); +// VIC.bordercolor = 3; + DLIST_RESTART(20); +} + // main program void main() { byte i; @@ -767,14 +780,16 @@ void main() { sprite_shape(hidbuf, 32+i, SPRITE_DATA[i]); } sprshad.spr_mcolor = 0xff; - sprshad.spr_mcolor0 = 0x0f; - sprshad.spr_mcolor1 = 0x00; + VIC.spr_mcolor0 = 0x0f; + VIC.spr_mcolor1 = 0x00; // select character set 2 VIC.addr = 0x15; // start scrolling @ bottom of level origin_y = START_ORIGIN_Y; // install joystick joy_install (joy_static_stddrv); + // setup display list + DLIST_SETUP(game_displaylist); // main game loop while (1) { make_floors(); diff --git a/presets/c64/hello.dasm b/presets/c64/hello.dasm index 906aa2c2..899940d3 100644 --- a/presets/c64/hello.dasm +++ b/presets/c64/hello.dasm @@ -7,6 +7,7 @@ Start sei ; turn off interrupts ldy #0 sty $d020 ; reset border color + Loop lda Message,y ; load message byte beq EOM ; 0 = end of string diff --git a/presets/c64/rasterirq.ca65 b/presets/c64/rasterirq.ca65 new file mode 100644 index 00000000..ad58d1fb --- /dev/null +++ b/presets/c64/rasterirq.ca65 @@ -0,0 +1,86 @@ + +USE_INTERRUPTOR = 0 + +.segment "DATA" + +StartDlist: .word NullDlist-1 +NextDlist: .word NullDlist-1 + +.segment "CODE" + +.global _dlist_setup +.global DLIST_IRQ_NEXT +.global DLIST_IRQ_RESTART +.if USE_INTERRUPTOR +.interruptor DLIST_IRQ +.endif + +_dlist_setup: + SEI ; set interrupt bit, make the CPU ignore interrupt requests + + sta StartDlist+0 ; save XA as pointer to start of dlist + stx StartDlist+1 + + LDA #%01111111 ; switch off interrupt signals from CIA-1 + STA $DC0D + + AND $D011 ; clear most significant bit of VIC's raster register + STA $D011 + + LDA $DC0D ; acknowledge pending interrupts from CIA-1 + LDA $DD0D ; acknowledge pending interrupts from CIA-2 + + LDA #252 ; set rasterline where interrupt shall occur + STA $D012 + +.if !USE_INTERRUPTOR + LDA #DLIST_IRQ + STA $0315 +.endif + + LDA #%00000001 ; enable raster interrupt signals from VIC + STA $D01A + cli + rts + +DLIST_IRQ: +DLIST_CALL: + lda NextDlist+1 + pha + lda NextDlist+0 + pha + rts + +DLIST_IRQ_RESTART: + sta $d012 + lda StartDlist+0 + sta NextDlist+0 + lda StartDlist+1 + sta NextDlist+1 + bne DLIST_ACK + +DLIST_IRQ_STOP: + lda #0 ; disable raster interrupt signals from VIC + sta $D01A + bne DLIST_ACK + +DLIST_IRQ_NEXT: + sta $d012 + pla + sta NextDlist+0 + pla + sta NextDlist+1 +DLIST_ACK: + ASL $D019 ; acknowledge the interrupt by clearing the VIC's interrupt flag +.if USE_INTERRUPTOR + clc + rts +.else + JMP $EA31 ; jump into KERNAL's standard interrupt service routine to handle keyboard scan, cursor display etc. +.endif + +NullDlist: + lda #252 + jmp DLIST_IRQ_RESTART diff --git a/presets/c64/rasterirq.h b/presets/c64/rasterirq.h new file mode 100644 index 00000000..087300d1 --- /dev/null +++ b/presets/c64/rasterirq.h @@ -0,0 +1,19 @@ +#ifndef _RASTERIRQ_H +#define _RASTERIRQ_H + + +void dlist_setup(void* ptr); + +#define DLIST_SETUP(func) \ + dlist_setup(((char*)func)-1) + +#define DLIST_NEXT(line) \ + __A__ = line; \ + asm ("jsr DLIST_IRQ_NEXT"); + +#define DLIST_RESTART(line) \ + __A__ = line; \ + asm ("jmp DLIST_IRQ_RESTART"); + + +#endif diff --git a/presets/c64/scroll4.c b/presets/c64/scroll4.c index 846b0361..7c3c07c7 100644 --- a/presets/c64/scroll4.c +++ b/presets/c64/scroll4.c @@ -8,183 +8,92 @@ #include #include -typedef uint8_t byte; -typedef uint16_t word; -typedef int8_t sbyte; +#include "common.h" +//#link "common.c" -#define COLS 40 -#define ROWS 25 +#include "scrolling.h" +//#link "scrolling.c" -void raster_wait(unsigned char line) { - while (VIC.rasterline < line) ; -} +#include "sprites.h" +//#link "sprites.c" -void wait_vblank() { - raster_wait(255); // TODO -} - -sbyte scroll_fine_x; -sbyte scroll_fine_y; -byte origin_x; -byte origin_y; -byte curbuf; -byte* scrnbuf[2]; // screen buffer(s) -byte tempbuf[COLS*ROWS]; - -void draw_cell(byte x, byte y) { +static void draw_cell(word ofs, byte x, byte y) { byte xx = x + origin_x; byte yy = y + origin_y; byte ch = xx ^ yy; - word ofs = x+y*COLS; - scrnbuf[curbuf][ofs] = ch; // character - tempbuf[ofs] = ch; // color + hidbuf[ofs] = ch; // character + colorbuf[ofs] = ch; // color } void scroll_draw_column(byte col) { byte y; + word ofs = col; for (y=0; yF6~_pSxCva3Ggperm{bUcr;Qj3l@HOy07 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 V;hf1F%1jg$CPw2ts)aSx_X?!2Yaajr literal 81925 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 diff --git a/res/zx.wasm b/res/zx.wasm index 56e5457337ea3b0676c19a11ef5b52a9747c48fd..502c3e5f2a4cee19a7ada1c60de77890acb0454d 100755 GIT binary patch literal 79676 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 IFmT=f1=x$75C8xG literal 74674 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 Date: Sun, 21 Aug 2022 21:08:11 -0500 Subject: [PATCH 19/24] debug views track stack pointer --- src/ide/views/debugviews.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/ide/views/debugviews.ts b/src/ide/views/debugviews.ts index c36c0439..df425037 100644 --- a/src/ide/views/debugviews.ts +++ b/src/ide/views/debugviews.ts @@ -310,6 +310,7 @@ export abstract class ProbeViewBaseBase { cumulativeData : boolean = false; cyclesPerLine : number; totalScanlines : number; + sp : number; // stack pointer abstract tick() : void; @@ -378,6 +379,9 @@ export abstract class ProbeViewBaseBase { case ProbeFlags.SCANLINE: row++; col=0; break; case ProbeFlags.FRAME: row=0; col=0; break; case ProbeFlags.CLOCKS: col += addr; clk += addr; break; + case ProbeFlags.SP_PUSH: + case ProbeFlags.SP_POP: + this.sp = addr; default: eventfn(op, addr, col, row, clk, value); break; @@ -598,6 +602,19 @@ export class RasterPCHeatMapView extends ProbeBitmapViewBase implements ProjectV } } +export class RasterStackMapView extends ProbeBitmapViewBase implements ProjectView { + + drawEvent(op, addr, col, row) { + var iofs = col + row * this.canvas.width; + var rgb = this.getOpRGB(op); + rgb = (0x1f3f7f << (this.sp & 15)) & 0xffffff; + if (!rgb) return; + var data = this.datau32[iofs]; + data = data | rgb | 0xff000000; + this.datau32[iofs] = data; + } +} + export class ProbeLogView extends ProbeViewBaseBase { vlist : VirtualTextScroller; maindiv : HTMLElement; From fcad9abcd9ed7d33d111c96fc48f0d148648fdd6 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Sun, 21 Aug 2022 23:30:35 -0500 Subject: [PATCH 20/24] c64: presets --- presets/c64/multisprite.ca65 | 4 +- presets/c64/test_multispritelib.c | 135 ++++++++++++++++++++++++++++++ src/platform/c64.ts | 3 +- 3 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 presets/c64/test_multispritelib.c diff --git a/presets/c64/multisprite.ca65 b/presets/c64/multisprite.ca65 index 47e37499..d75b7a3a 100644 --- a/presets/c64/multisprite.ca65 +++ b/presets/c64/multisprite.ca65 @@ -1,7 +1,7 @@ MAX_MSPRITES = 28 -MIN_Y_SPACING = 33 +MIN_Y_SPACING = 35 DEBUG = 1 @@ -179,6 +179,7 @@ bailout_line: .res 1 .global _msprite_color .global _msprite_shape .global _msprite_flags +.global _msprite_last_y _msprite_order: .res MAX_MSPRITES _msprite_x_lo: .res MAX_MSPRITES @@ -187,6 +188,7 @@ _msprite_y: .res MAX_MSPRITES _msprite_color: .res MAX_MSPRITES _msprite_shape: .res MAX_MSPRITES _msprite_flags: .res MAX_MSPRITES +_msprite_last_y:.res 1 .global _msprite_x_frac .global _msprite_xvel_lo diff --git a/presets/c64/test_multispritelib.c b/presets/c64/test_multispritelib.c new file mode 100644 index 00000000..58d08c34 --- /dev/null +++ b/presets/c64/test_multispritelib.c @@ -0,0 +1,135 @@ + +#include "common.h" +//#link "common.c" + +#include "multisprite.h" +//#link "multisprite.ca65" + +#include "rasterirq.h" +//#link "rasterirq.ca65" + +#define NUM_TEST_SPRITES 24 + +byte* sprite_bank = (byte*)DEFAULT_SCREEN + 0x3f8; + +/*{w:12,h:21,bpp:2,brev:1}*/ +const char SPRITEMC[3*21] = { + 0x00,0xAA,0x80,0x02,0xAA,0xA0,0x0A,0xAA,0xA8, + 0x0A,0xAE,0xA8,0x0A,0xBB,0xA8,0x0A,0xBA,0xA8, + 0x0A,0xBB,0xA8,0x0A,0xAE,0xA8,0x0A,0xAA,0xA8, + 0x09,0xAA,0x98,0x08,0x6A,0x48,0x08,0x1D,0x08, + 0x02,0x0C,0x20,0x02,0x0C,0x20,0x02,0x0C,0x20, + 0x00,0x8C,0x80,0x00,0x8C,0x80,0x00,0x55,0x40, + 0x00,0x77,0x40,0x00,0x5D,0x40,0x00,0x15,0x00 +}; + +void sprite_shape(char* vicbank, byte index, const char* sprite_data) { + memmove(vicbank + index*64, sprite_data, 64); +} + +void setup_sprites() { + byte i; + sprite_shape((void*)0x0, 255, SPRITEMC); + for (i=0; i>8; + msprite_y[i] = i*0+50; +// msprite_flags[i] = 0; + msprite_shape[i] = 255; + msprite_color[i] = i|8; + } +} + +// constants for display list + +#define Y0 21 +#define Y1 35 +#define YS 42 + +void display_list() { + msprite_render_init(); + msprite_render_section(); + DLIST_NEXT(Y1+YS*1); + msprite_render_section(); + DLIST_NEXT(Y1+YS*2); + msprite_render_section(); + DLIST_NEXT(Y1+YS*3); + msprite_render_section(); + DLIST_NEXT(Y1+YS*4); + msprite_render_section(); + VIC.bordercolor = 3; + msprite_sort(); + VIC.bordercolor = 4; + msprite_add_velocity(NUM_TEST_SPRITES); + VIC.bordercolor = 0; + DLIST_RESTART(Y0); +} + +void msprite_set_position(byte index, int x, byte y) { + asm("sei"); + msprite_x_lo[index] = x; + msprite_x_hi[index] = x >> 8; + msprite_y[index] = y; + asm("cli"); +} + +void msprite_add_position(byte index, byte dx, byte dy) { + int x; + x = msprite_x_lo[index] | msprite_x_hi[index]*256; + x += dx; + asm("sei"); + msprite_x_lo[index] = x; + msprite_x_hi[index] = x >> 8; + msprite_y[index] += dy; + asm("cli"); +} + +void apply_gravity() { + byte i; + for (i=0; i> 8; + msprite_yvel_lo[i] = yvel; + msprite_yvel_hi[i] = yvel >> 8; + } +} + +void do_test() { + byte i; + raster_wait(160); + for (i=0; i Date: Tue, 23 Aug 2022 12:48:39 -0500 Subject: [PATCH 21/24] c64: debug info raster x/y --- src/ide/ui.ts | 5 ++++- src/ide/views/debugviews.ts | 36 ++++++++++++++++++++++-------------- src/machine/c64.ts | 8 ++++++-- src/platform/c64.ts | 8 ++++---- 4 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/ide/ui.ts b/src/ide/ui.ts index 2362e991..63c3cbe3 100644 --- a/src/ide/ui.ts +++ b/src/ide/ui.ts @@ -15,7 +15,7 @@ import { GHSession, GithubService, getRepos, parseGithubURL } from "./services"; import Split = require('split.js'); import { importPlatform } from "../platform/_index"; import { DisassemblerView, ListingView, PC_LINE_LOOKAHEAD, SourceEditor } from "./views/editors"; -import { AddressHeatMapView, BinaryFileView, MemoryMapView, MemoryView, ProbeLogView, ProbeSymbolView, RasterPCHeatMapView, ScanlineIOView, VRAMMemoryView } from "./views/debugviews"; +import { AddressHeatMapView, BinaryFileView, MemoryMapView, MemoryView, ProbeLogView, ProbeSymbolView, RasterPCHeatMapView, RasterStackMapView, ScanlineIOView, VRAMMemoryView } from "./views/debugviews"; import { AssetEditorView } from "./views/asseteditor"; import { isMobileDevice } from "./views/baseviews"; import { CallStackView, DebugBrowserView } from "./views/treeviews"; @@ -367,6 +367,9 @@ function refreshWindowList() { addWindowItem("#crtheatmap", "CRT Probe", () => { return new RasterPCHeatMapView(); }); + addWindowItem("#stackheatmap", "Stack Activity", () => { + return new RasterStackMapView(); + }); addWindowItem("#probelog", "Probe Log", () => { return new ProbeLogView(); }); diff --git a/src/ide/views/debugviews.ts b/src/ide/views/debugviews.ts index df425037..a2a7d0fd 100644 --- a/src/ide/views/debugviews.ts +++ b/src/ide/views/debugviews.ts @@ -370,6 +370,7 @@ export abstract class ProbeViewBaseBase { var row=0; var col=0; var clk=0; + this.sp = 0; for (var i=0; i> 8) & 0xff; @@ -593,25 +594,32 @@ export class AddressHeatMapView extends ProbeBitmapViewBase implements ProjectVi export class RasterPCHeatMapView extends ProbeBitmapViewBase implements ProjectView { drawEvent(op, addr, col, row) { - var iofs = col + row * this.canvas.width; - var rgb = this.getOpRGB(op); + var rgb = this.getOpRGB(op, addr); if (!rgb) return; - var data = this.datau32[iofs]; - data = data | rgb | 0xff000000; - this.datau32[iofs] = data; + var iofs = col + row * this.canvas.width; + var data = rgb | 0xff000000; + this.datau32[iofs] |= data; } } export class RasterStackMapView extends ProbeBitmapViewBase implements ProjectView { + interrupt: number; + drawEvent(op, addr, col, row) { - var iofs = col + row * this.canvas.width; - var rgb = this.getOpRGB(op); - rgb = (0x1f3f7f << (this.sp & 15)) & 0xffffff; - if (!rgb) return; - var data = this.datau32[iofs]; - data = data | rgb | 0xff000000; - this.datau32[iofs] = data; + var rgb; + rgb = (0x030609 * (this.sp & 7)) | 0x404040; + if (op == ProbeFlags.INTERRUPT) this.interrupt = 1; + if (this.interrupt == 1 && op == ProbeFlags.SP_PUSH) this.interrupt = addr; + if (this.interrupt > 1 && this.sp > this.interrupt) this.interrupt = 0; + if (this.interrupt) rgb |= 0x800000; + if (op == ProbeFlags.EXECUTE) { + var iofs = col + row * this.canvas.width; + var data = rgb | 0xff000000; + while (iofs >= 0 && !(this.datau32[iofs] & 0xffffff)) { + this.datau32[iofs--] = data; + } + } } } diff --git a/src/machine/c64.ts b/src/machine/c64.ts index 8acfcee4..f107c75c 100644 --- a/src/machine/c64.ts +++ b/src/machine/c64.ts @@ -226,17 +226,21 @@ export class C64_WASMMachine extends BaseWASMMachine implements Machine, Probeab let screen = vicbank + (state.vic[0x18] >> 4) * 0x400; let isbitmap = state.vic[0x11] & 0x20; let ischar = (state.cia2[0]&1)==1 && (state.vic[0x18]&12)==4; - s += `Scanline: ${lpad(this.getRasterY(),3)} `; + let rasterX = state.state[0xf4]; + let rasterY = this.getRasterY(); + s += 'Mode:'; if (state.vic[0x11] & 0x20) s += ' BITMAP'; else s += ' CHAR'; if (state.vic[0x16] & 0x10) s += ' MULTICOLOR'; if (state.vic[0x11] & 0x40) s += ' EXTENDED'; s += "\n"; + s += `Raster: (${lpad(rasterX,3)}, ${lpad(rasterY,3)}) `; + s += `Scroll: (${state.vic[0x16] & 7}, ${state.vic[0x11] & 7})`; + s += "\n"; s += `VIC Bank: $${hex(vicbank,4)} Scrn: $${hex(screen,4)} `; if (isbitmap) s += `Bitmap: $${hex(charmem&0xe000,4)}` else if (ischar) s += `Char: ROM $${hex(charmem,4)}`; else s += `Char: $${hex(charmem,4)}`; s += "\n"; - s += `Scroll X:${state.vic[0x16] & 7} Y:${state.vic[0x11] & 7}\n`; s += dumpRAM(m, 0xd000, 64); return s; } diff --git a/src/platform/c64.ts b/src/platform/c64.ts index 1f227ff8..ecc07101 100644 --- a/src/platform/c64.ts +++ b/src/platform/c64.ts @@ -19,12 +19,12 @@ const C64_PRESETS = [ {id:'scroll5.c', name:'Scrolling (Camera Following)'}, {id:'side_scroller.c', name:'Side-Scrolling Game'}, {id:'fullscrollgame.c', name:'Full-Scrolling Game'}, - {id:'test_multiplex.c', name:'Sprite Multiplexing (Simple)'}, - {id:'test_multispritelib.c', name:'Sprite Multiplexing (Library)'}, - {id:'mcbitmap.c', name:'Multicolor Lines+Flood Fill'}, + {id:'test_multiplex.c', name:'Sprite Retriggering'}, + {id:'test_multispritelib.c', name:'Sprite Multiplexing Library'}, + {id:'mcbitmap.c', name:'Multicolor Bitmap Mode'}, //{id:'mandel.c', name:'Mandelbrot Fractal'}, {id:'musicplayer.c', name:'Music Player'}, - {id:'sidtune.dasm', name:'Tiny SID Tune (ASM)'}, + //{id:'sidtune.dasm', name:'Tiny SID Tune (ASM)'}, {id:'siddemo.c', name:'SID Player Demo'}, {id:'climber.c', name:'Climber Game'}, ]; From ba2644e7d03ca03df59abc15f3fea5d4faae31a4 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Wed, 24 Aug 2022 13:28:00 -0500 Subject: [PATCH 22/24] debugviews: new CRT Probe --- src/ide/ui.ts | 4 +-- src/ide/views/debugviews.ts | 69 ++++++++++++++++++++++++++++--------- src/platform/vcs.ts | 3 +- 3 files changed, 55 insertions(+), 21 deletions(-) diff --git a/src/ide/ui.ts b/src/ide/ui.ts index 63c3cbe3..b56313bc 100644 --- a/src/ide/ui.ts +++ b/src/ide/ui.ts @@ -365,9 +365,7 @@ function refreshWindowList() { }); // TODO: only if raster addWindowItem("#crtheatmap", "CRT Probe", () => { - return new RasterPCHeatMapView(); - }); - addWindowItem("#stackheatmap", "Stack Activity", () => { + //return new RasterPCHeatMapView(); return new RasterStackMapView(); }); addWindowItem("#probelog", "Probe Log", () => { diff --git a/src/ide/views/debugviews.ts b/src/ide/views/debugviews.ts index a2a7d0fd..60614365 100644 --- a/src/ide/views/debugviews.ts +++ b/src/ide/views/debugviews.ts @@ -304,6 +304,8 @@ export class MemoryMapView implements ProjectView { // TODO: clear buffer when scrubbing +const OPAQUE_BLACK = 0xff000000; + export abstract class ProbeViewBaseBase { probe : ProbeRecorder; tooldiv : HTMLElement; @@ -375,7 +377,7 @@ export abstract class ProbeViewBaseBase { var word = p.buf[i]; var addr = word & 0xffff; var value = (word >> 16) & 0xff; - var op = word & 0xff000000; + var op = word & OPAQUE_BLACK; switch (op) { case ProbeFlags.SCANLINE: row++; col=0; break; case ProbeFlags.FRAME: row=0; col=0; break; @@ -524,14 +526,17 @@ abstract class ProbeBitmapViewBase extends ProbeViewBase { refresh() { this.tick(); - this.datau32.fill(0xff000000); + this.datau32.fill(OPAQUE_BLACK); } tick() { super.tick(); + this.drawImage(); + } + drawImage() { this.ctx.putImageData(this.imageData, 0, 0); } clear() { - this.datau32.fill(0xff000000); + this.datau32.fill(OPAQUE_BLACK); } } @@ -546,7 +551,7 @@ export class AddressHeatMapView extends ProbeBitmapViewBase implements ProjectVi var v = platform.readAddress(i); var rgb = (v >> 2) | (v & 0x1f); rgb |= (rgb<<8) | (rgb<<16); - this.datau32[i] = rgb | 0xff000000; + this.datau32[i] = rgb | OPAQUE_BLACK; } } @@ -556,7 +561,7 @@ export class AddressHeatMapView extends ProbeBitmapViewBase implements ProjectVi var x = addr & 0xff; var y = (addr >> 8) & 0xff; var data = this.datau32[addr & 0xffff]; - data = data | rgb | 0xff000000; + data = data | rgb | OPAQUE_BLACK; this.datau32[addr & 0xffff] = data; } @@ -597,27 +602,57 @@ export class RasterPCHeatMapView extends ProbeBitmapViewBase implements ProjectV var rgb = this.getOpRGB(op, addr); if (!rgb) return; var iofs = col + row * this.canvas.width; - var data = rgb | 0xff000000; + var data = rgb | OPAQUE_BLACK; this.datau32[iofs] |= data; } + + drawImage() { + // fill in the gaps + let last = OPAQUE_BLACK; + for (let i=0; i 1 && this.sp > this.interrupt) this.interrupt = 0; - if (this.interrupt) rgb |= 0x800000; - if (op == ProbeFlags.EXECUTE) { - var iofs = col + row * this.canvas.width; - var data = rgb | 0xff000000; - while (iofs >= 0 && !(this.datau32[iofs] & 0xffffff)) { - this.datau32[iofs--] = data; + // track writes + if (op == ProbeFlags.MEM_WRITE) { this.rgb |= 0x00002f; } + if (op == ProbeFlags.VRAM_WRITE) { this.rgb |= 0x003f80; } + if (op == ProbeFlags.IO_WRITE) { this.rgb |= 0x1f3f80; } + if (op == ProbeFlags.IO_READ) { this.rgb |= 0x001f00; } + // draw pixels? + if (op == ProbeFlags.ILLEGAL) { + this.datau32[iofs] = 0xff0f0f0f; + } else { + let data = this.rgb; + if (op == ProbeFlags.EXECUTE) { + let sp = this.sp & 15; + if (sp >= 8) sp = 16-sp; + if (Math.abs(this.lastpc) - addr > 16) { sp += 1; } + if (Math.abs(this.lastpc) - addr > 256) { sp += 1; } + data = this.rgb = (0x080808 * sp) + 0x202020; + this.lastpc = addr; + } + if (this.interrupt) { data |= 0x800040; } + if (this.datau32[iofs] == OPAQUE_BLACK) { + this.datau32[iofs] = data | OPAQUE_BLACK; } } } @@ -697,7 +732,7 @@ export class ScanlineIOView extends ProbeViewBaseBase { var opaddr = line[i]; if (opaddr !== undefined) { var addr = opaddr & 0xffff; - var op = op & 0xff000000; + var op = op & OPAQUE_BLACK; if (op == ProbeFlags.EXECUTE) { s += ','; } else { diff --git a/src/platform/vcs.ts b/src/platform/vcs.ts index c38d4b23..cedd8bb4 100644 --- a/src/platform/vcs.ts +++ b/src/platform/vcs.ts @@ -394,7 +394,8 @@ class VCSPlatform extends BasePlatform { bus.oldWrite = bus.write; bus.write = function(a,v) { this.oldWrite(a,v); - if (a < 0x80) probe.logIOWrite(a,v); + if (a == 0x02) probe.logIllegal(a); // WSYNC + else if (a < 0x80) probe.logIOWrite(a,v); else if (a > 0x280 && a < 0x300) probe.logIOWrite(a,v); else probe.logWrite(a,v); } From 936608d6d59c237da58462df895a793419ba44d7 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Wed, 24 Aug 2022 20:12:45 -0500 Subject: [PATCH 23/24] c64: use light pen registers w/ screen pointer --- src/machine/c64.ts | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/machine/c64.ts b/src/machine/c64.ts index f107c75c..bbf9208c 100644 --- a/src/machine/c64.ts +++ b/src/machine/c64.ts @@ -1,7 +1,7 @@ -import { Probeable } from "../common/devices"; +import { AcceptsPaddleInput, Probeable } from "../common/devices"; import { dumpRAM, KeyFlags } from "../common/emu"; -import { hex, lpad } from "../common/util"; +import { clamp, hex, lpad } from "../common/util"; // https://www.c64-wiki.com/wiki/C64 // http://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt @@ -15,7 +15,8 @@ import { Machine } from "../common/baseplatform"; import { TrapCondition } from "../common/devices"; import { BaseWASMMachine } from "../common/wasmplatform"; -export class C64_WASMMachine extends BaseWASMMachine implements Machine, Probeable { +export class C64_WASMMachine extends BaseWASMMachine + implements Machine, Probeable, AcceptsPaddleInput { numTotalScanlines = 312; cpuCyclesPerLine = 63; @@ -23,6 +24,8 @@ export class C64_WASMMachine extends BaseWASMMachine implements Machine, Probeab prgstart : number; joymask0 = 0; joymask1 = 0; + lightpen_x = 0; + lightpen_y = 0; loadBIOS(srcArray: Uint8Array) { var patch1ofs = 0xea24 - 0xe000 + 0x3000; @@ -253,4 +256,16 @@ export class C64_WASMMachine extends BaseWASMMachine implements Machine, Probeab } } + setPaddleInput(controller: number, value: number): void { + if (controller == 0) this.lightpen_x = value; + if (controller == 1) this.lightpen_y = value; + const x1 = 22; + const y1 = 36; + const x2 = 228; + const y2 = 220; + let x = clamp(0, 255, (this.lightpen_x - x1) / (x2 - x1) * 160 + 24); + let y = clamp(0, 255, (this.lightpen_y - y1) / (y2 - y1) * 200 + 50); + this.exports.machine_set_mouse(this.sys, x, y); + } + } From fe8f3de4509a009cbc56a6f6eaac4f224ab62cf7 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Thu, 25 Aug 2022 15:52:04 -0500 Subject: [PATCH 24/24] c64: presets --- presets/c64/common.h | 2 +- presets/c64/fullscrollgame.c | 98 +++++++++++++-------- presets/c64/joymove.c | 6 +- presets/c64/mcbitmap.c | 2 +- presets/c64/mcbitmap.h | 1 + presets/c64/scroll5.c | 3 +- presets/c64/scrolling.c | 13 ++- presets/c64/scrolling.h | 1 + presets/c64/scrolling_text.c | 162 +++++++++++++++++++++++++++++++++++ presets/c64/side_scroller.c | 4 +- presets/c64/sidmacros.h | 8 +- src/platform/c64.ts | 1 + src/worker/workermain.ts | 1 + 13 files changed, 247 insertions(+), 55 deletions(-) create mode 100644 presets/c64/scrolling_text.c diff --git a/presets/c64/common.h b/presets/c64/common.h index e48188a4..f8c3ee26 100644 --- a/presets/c64/common.h +++ b/presets/c64/common.h @@ -37,7 +37,7 @@ typedef enum { false, true } bool; // boolean CIA2.pra = (CIA2.pra & ~3) | (((((_addr)>>8)&0xc0)>>6)^3); // set VIC character memory (given the start address) -#define SET_VIC_CHAR(_addr) \ +#define SET_VIC_BITMAP(_addr) \ VIC.addr = (VIC.addr & 0b11110001) | ((((_addr)>>8)&0x38)>>2); // set VIC screen memory (given the start address) diff --git a/presets/c64/fullscrollgame.c b/presets/c64/fullscrollgame.c index 2088c508..aad3860b 100644 --- a/presets/c64/fullscrollgame.c +++ b/presets/c64/fullscrollgame.c @@ -48,21 +48,21 @@ #define FLAG_LADDER 4 +// level map data +extern const byte charset_data[]; +extern const byte charset_attrib_data[]; +extern const byte chartileset_data[]; +extern const byte chartileset_colour_data[]; +extern const byte chartileset_tag_data[]; +extern const byte map_data[]; + static byte framecount; static byte framemask; const byte BITMASKS[8] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 }; -extern const byte charset_data[]; -extern const byte charset_attrib_data[]; -extern const byte chartileset_data[]; -extern const byte chartileset_colour_data[]; -extern const byte chartileset_tag_data[]; -extern const byte* map_row_pointers[]; - static byte tileflagmap[MAP_ROWS*MAP_COLS]; - static byte tileindex; static byte tilechar; @@ -74,8 +74,8 @@ static bool get_cell_at(byte world_x, byte world_y) { if (col < 0 || col >= MAP_COLS || row < 0 || row >= MAP_ROWS) { return false; } else { - tileindex = map_row_pointers[row][col]; - tilechar = chartileset_data[xofs + yofs*4 + tileindex*16]; + tileindex = map_data[col + row * MAP_ROWS]; + tilechar = chartileset_data[xofs + (yofs + tileindex*4)*4]; return true; } } @@ -283,12 +283,15 @@ typedef struct Actor { Actor actors[MAX_ACTORS]; -Actor* player = &actors[0]; +Actor* const player = &actors[0]; -void draw_actor(register Actor* actor) { - word xpos = actor->xx; - word ypos = actor->yy; +void draw_actor(register Actor* actor, byte index) { byte shape = 240; + word xpos = actor->xx + pixofs_x + fine_correct_x + ACTOR_OFFSET_X; + word ypos = actor->yy + pixofs_y + fine_correct_y + ACTOR_OFFSET_Y; + if (xpos > 320 || ypos > 250) { + ypos = 255; + } switch (actor->state) { case STANDING: if (actor->xvel && actor->xx & 4) shape += 4; @@ -303,10 +306,7 @@ void draw_actor(register Actor* actor) { if (actor->yy & 2) shape += 5; break; } - sprite_draw(0, - xpos + pixofs_x + fine_correct_x + ACTOR_OFFSET_X, - ypos + pixofs_y + fine_correct_y + ACTOR_OFFSET_Y, - shape); + sprite_draw(index, xpos, ypos, shape); } const char velocity_bitmasks[8] = { @@ -531,10 +531,51 @@ void camera_follow(register Actor* actor) { } } +void control_enemy(struct Actor* enemy) { + byte control = 0; + int pdx = player->xx - enemy->xx; + int pdy = player->yy - enemy->yy; + if (pdy > 0) { + control |= JOY_DOWN_MASK; + } else if (pdy < 0) { + control |= JOY_UP_MASK; + } + if (pdx < -32) { + control |= JOY_LEFT_MASK; + } else if (pdx > 32) { + control |= JOY_RIGHT_MASK; + } + control_actor(enemy, control); +} + +void next_frame() { + char joy; + // increment frame counter + framemask = BITMASKS[++framecount & 7]; + // get joystick bits + joy = joy_read(0); + // move player + control_actor(player, joy); + // move enemy + control_enemy(&actors[1]); + // move the camera if needed + camera_follow(player); + // animate sprites in shadow sprite ram + draw_actor(&actors[0], 0); + draw_actor(&actors[1], 1); + // wait for vblank + wait_vblank(); + // then update sprite registers + sprite_update(visbuf); + // do scrolling stuff each frame + scroll_update(); +} + void setup_sprites(void) { sprite_clear(); sprite_set_shapes(SPRITE_DATA, 240, NUM_SPRITE_PATTERNS); sprshad.spr_color[0] = COLOR_WHITE; + sprshad.spr_color[1] = COLOR_LIGHTRED; sprshad.spr_mcolor = 0xff; VIC.spr_mcolor0 = 12; VIC.spr_mcolor1 = 14; @@ -552,26 +593,6 @@ void setup_charset() { memcpy((char*)0x8800, charset_data, 0x800); } -void next_frame() { - char joy; - // increment frame counter - framemask = BITMASKS[++framecount & 7]; - // get joystick bits - joy = joy_read(0); - // move player - control_actor(player, joy); - // move the camera if needed - camera_follow(player); - // animate sprite in shadow sprite ram - draw_actor(player); - // wait for vblank - wait_vblank(); - // then update sprite registers - sprite_update(visbuf); - // do scrolling stuff each frame - scroll_update(); -} - void main(void) { clrscr(); @@ -608,6 +629,7 @@ void main(void) { player->state = JUMPING; */ // actor_set_position(player, 63, 63, STANDING); + actors[1].xx = 128; // infinite loop while (1) { diff --git a/presets/c64/joymove.c b/presets/c64/joymove.c index ff603561..6ed8214b 100644 --- a/presets/c64/joymove.c +++ b/presets/c64/joymove.c @@ -16,9 +16,9 @@ const char SPRITE_DATA[64] = { void main(void) { // variables int x = 172; // sprite X position (16-bit) - char y = 145; // sprite Y position (8-bit) - char bgcoll; // sprite background collision flags - char joy; // joystick flags + byte y = 145; // sprite Y position (8-bit) + byte bgcoll; // sprite background collision flags + byte joy; // joystick flags // copy sprite pattern to RAM address 0x3800 memcpy((char*)0x3800, SPRITE_DATA, sizeof(SPRITE_DATA)); diff --git a/presets/c64/mcbitmap.c b/presets/c64/mcbitmap.c index b1fd72b1..bc5ec516 100644 --- a/presets/c64/mcbitmap.c +++ b/presets/c64/mcbitmap.c @@ -8,7 +8,7 @@ void setup_bitmap_multi() { VIC.ctrl1 = 0x38; VIC.ctrl2 = 0x18; SET_VIC_BANK(MCB_BITMAP); - SET_VIC_CHAR(MCB_BITMAP); + SET_VIC_BITMAP(MCB_BITMAP); SET_VIC_SCREEN(MCB_COLORS); memset((void*)MCB_BITMAP, 0, 0x2000); memset((void*)MCB_COLORS, 0, 0x800); diff --git a/presets/c64/mcbitmap.h b/presets/c64/mcbitmap.h index 0308c109..0e45cc36 100644 --- a/presets/c64/mcbitmap.h +++ b/presets/c64/mcbitmap.h @@ -13,3 +13,4 @@ void set_pixel(byte x, byte y, byte color); void draw_line(int x0, int y0, int x1, int y1, byte color); byte flood_fill(byte x, byte y, byte color); + \ No newline at end of file diff --git a/presets/c64/scroll5.c b/presets/c64/scroll5.c index 1899a91b..7fc744d7 100644 --- a/presets/c64/scroll5.c +++ b/presets/c64/scroll5.c @@ -67,14 +67,13 @@ void camera_follow(byte moving) { if (dx > 8) dx = 8; else if (dx < -8) dx = -8; camerax -= dx; - scroll_horiz(dx); } if (dy) { if (dy > 8) dy = 8; else if (dy < -8) dy = -8; cameray -= dy; - scroll_vert(dy); } + scroll_xy(dx, dy); } void main(void) { diff --git a/presets/c64/scrolling.c b/presets/c64/scrolling.c index 6ef5fee5..f8402568 100644 --- a/presets/c64/scrolling.c +++ b/presets/c64/scrolling.c @@ -108,7 +108,7 @@ void scroll_update() { } } -void scroll_left() { +static void scroll_left() { copy_if_needed(); memmove(hidbuf, hidbuf+1, COLS*ROWS-1); memmove(colorbuf, colorbuf+1, COLS*ROWS-1); @@ -117,7 +117,7 @@ void scroll_left() { swap_needed = true; } -void scroll_up() { +static void scroll_up() { copy_if_needed(); memmove(hidbuf, hidbuf+COLS, COLS*(ROWS-1)); memmove(colorbuf, colorbuf+COLS, COLS*(ROWS-1)); @@ -126,7 +126,7 @@ void scroll_up() { swap_needed = true; } -void scroll_right() { +static void scroll_right() { copy_if_needed(); memmove(hidbuf+1, hidbuf, COLS*ROWS-1); memmove(colorbuf+1, colorbuf, COLS*ROWS-1); @@ -135,7 +135,7 @@ void scroll_right() { swap_needed = true; } -void scroll_down() { +static void scroll_down() { copy_if_needed(); memmove(hidbuf+COLS, hidbuf, COLS*(ROWS-1)); memmove(colorbuf+COLS, colorbuf, COLS*(ROWS-1)); @@ -168,6 +168,11 @@ void scroll_vert(sbyte delta_y) { } } +void scroll_xy(sbyte delta_x, sbyte delta_y) { + if (delta_x) scroll_horiz(delta_x); + if (delta_y) scroll_vert(delta_y); +} + void scroll_setup() { scroll_fine_x = scroll_fine_y = 0; origin_x = origin_y = 0; diff --git a/presets/c64/scrolling.h b/presets/c64/scrolling.h index 26acf31b..98982880 100644 --- a/presets/c64/scrolling.h +++ b/presets/c64/scrolling.h @@ -20,6 +20,7 @@ extern byte swap_needed; // TRUE if scroll_update() swaps void scroll_setup(void); // scroll in X or Y directions +void scroll_xy(sbyte delta_x, sbyte delta_y); void scroll_horiz(sbyte delta_x); void scroll_vert(sbyte delta_y); diff --git a/presets/c64/scrolling_text.c b/presets/c64/scrolling_text.c new file mode 100644 index 00000000..822e5d5b --- /dev/null +++ b/presets/c64/scrolling_text.c @@ -0,0 +1,162 @@ + +#include +#include +#include +#include +#include +#include +#include + +#include "common.h" +//#link "common.c" + +#include "rasterirq.h" +//#link "rasterirq.ca65" + +// generated from https://8bitworkshop.com/bitmapfontgenerator/ +// 16 x 32 MSB first y offset 6 Terminus +#define LOCHAR 32 +#define HICHAR 127 +#define FONT_BWIDTH 2 +#define FONT_HEIGHT 32 +#define FONT_ROWS (FONT_HEIGHT/8) +const char FONT[HICHAR-LOCHAR+1][FONT_HEIGHT*FONT_BWIDTH] = { +{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x3F,0xFC,0x3F,0xFC,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x3F,0xFC,0x3F,0xFC,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x0F,0xF0,0x1F,0xF8,0x39,0x9C,0x31,0x8C,0x31,0x80,0x31,0x80,0x31,0x80,0x39,0x80,0x1F,0xF0,0x0F,0xF8,0x01,0x9C,0x01,0x8C,0x01,0x8C,0x01,0x8C,0x31,0x8C,0x39,0x9C,0x1F,0xF8,0x0F,0xF0,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x18,0x3F,0x18,0x33,0x30,0x33,0x30,0x3F,0x60,0x1E,0x60,0x00,0xC0,0x00,0xC0,0x01,0x80,0x01,0x80,0x03,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x0C,0xF0,0x0D,0xF8,0x19,0x98,0x19,0x98,0x31,0xF8,0x30,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x1F,0xC0,0x38,0xE0,0x30,0x60,0x30,0x60,0x30,0x60,0x38,0xE0,0x1D,0xC0,0x0F,0x80,0x0F,0x00,0x1F,0x8C,0x39,0xDC,0x70,0xF8,0x60,0x70,0x60,0x30,0x60,0x30,0x60,0x70,0x70,0xF8,0x3F,0xDC,0x1F,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xE0,0x01,0xC0,0x03,0x80,0x03,0x00,0x07,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x07,0x00,0x03,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xC0,0x00,0xE0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0xE0,0x00,0xC0,0x01,0xC0,0x03,0x80,0x07,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x1C,0x70,0x0E,0xE0,0x07,0xC0,0x03,0x80,0x7F,0xFC,0x7F,0xFC,0x03,0x80,0x07,0xC0,0x0E,0xE0,0x1C,0x70,0x38,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x3F,0xFC,0x3F,0xFC,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x80,0x03,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0xC0,0x01,0x80,0x01,0x80,0x03,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x0C,0x00,0x0C,0x00,0x18,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x1C,0x30,0x3C,0x30,0x7C,0x30,0xEC,0x31,0xCC,0x33,0x8C,0x37,0x0C,0x3E,0x0C,0x3C,0x0C,0x38,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x03,0x80,0x07,0x80,0x0F,0x80,0x0D,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x0F,0xF0,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x00,0x0C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1C,0x07,0xF8,0x07,0xF8,0x00,0x1C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x1C,0x00,0x3C,0x00,0x7C,0x00,0xEC,0x01,0xCC,0x03,0x8C,0x07,0x0C,0x0E,0x0C,0x1C,0x0C,0x38,0x0C,0x30,0x0C,0x30,0x0C,0x3F,0xFC,0x3F,0xFC,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0xF0,0x3F,0xF8,0x00,0x1C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x30,0x0C,0x38,0x0C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF8,0x1F,0xF8,0x38,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0xF0,0x3F,0xF8,0x30,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x18,0x00,0x18,0x00,0x30,0x00,0x30,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x0C,0x1F,0xFC,0x0F,0xFC,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1C,0x1F,0xF8,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x80,0x03,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x1C,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x38,0x00,0x1C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x3F,0xF8,0x70,0x1C,0x60,0x0C,0x61,0xFC,0x63,0xFC,0x67,0x0C,0x66,0x0C,0x66,0x0C,0x66,0x0C,0x66,0x0C,0x66,0x0C,0x66,0x0C,0x67,0x1C,0x63,0xFC,0x61,0xEC,0x60,0x00,0x70,0x00,0x3F,0xFC,0x1F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x3F,0xFC,0x3F,0xFC,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x3F,0xF8,0x30,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x18,0x3F,0xF0,0x3F,0xF0,0x30,0x38,0x30,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x1C,0x3F,0xF8,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x3F,0xF0,0x30,0x38,0x30,0x18,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x18,0x30,0x38,0x3F,0xF0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0xE0,0x3F,0xE0,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0xE0,0x3F,0xE0,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0xFC,0x30,0xFC,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x3F,0xFC,0x3F,0xFC,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x07,0xE0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0xE0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x7E,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x38,0x38,0x1F,0xF0,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x1C,0x30,0x38,0x30,0x70,0x30,0xE0,0x31,0xC0,0x33,0x80,0x37,0x00,0x3E,0x00,0x3C,0x00,0x3C,0x00,0x3E,0x00,0x37,0x00,0x33,0x80,0x31,0xC0,0x30,0xE0,0x30,0x70,0x30,0x38,0x30,0x1C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x0C,0x60,0x0C,0x70,0x1C,0x78,0x3C,0x6C,0x6C,0x6C,0x6C,0x67,0xCC,0x63,0x8C,0x63,0x8C,0x61,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x0C,0x3C,0x0C,0x3E,0x0C,0x37,0x0C,0x33,0x8C,0x31,0xCC,0x30,0xEC,0x30,0x7C,0x30,0x3C,0x30,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x3F,0xF8,0x30,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x1C,0x3F,0xF8,0x3F,0xF0,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x31,0xCC,0x38,0xFC,0x1F,0xF8,0x0F,0xF8,0x00,0x1C,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x3F,0xF8,0x30,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x1C,0x3F,0xF8,0x3F,0xF0,0x37,0x00,0x33,0x80,0x31,0xC0,0x30,0xE0,0x30,0x70,0x30,0x38,0x30,0x1C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x30,0x00,0x30,0x00,0x38,0x00,0x1F,0xF0,0x0F,0xF8,0x00,0x1C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x06,0x60,0x06,0x60,0x06,0x60,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x60,0x0C,0x61,0x0C,0x63,0x8C,0x63,0x8C,0x67,0xCC,0x6C,0x6C,0x6C,0x6C,0x78,0x3C,0x70,0x1C,0x60,0x0C,0x60,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x18,0x18,0x18,0x18,0x0C,0x30,0x0C,0x30,0x06,0x60,0x06,0x60,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x06,0x60,0x06,0x60,0x0C,0x30,0x0C,0x30,0x18,0x18,0x18,0x18,0x30,0x0C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x18,0x18,0x18,0x18,0x0C,0x30,0x0C,0x30,0x06,0x60,0x06,0x60,0x03,0xC0,0x03,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x0F,0xE0,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0F,0xE0,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x0C,0x00,0x0C,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x01,0x80,0x00,0xC0,0x00,0xC0,0x00,0x60,0x00,0x60,0x00,0x30,0x00,0x30,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x0F,0xE0,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x0F,0xE0,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x1C,0x38,0x38,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x1F,0xF8,0x00,0x1C,0x00,0x0C,0x00,0x0C,0x0F,0xFC,0x1F,0xFC,0x38,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x0C,0x1F,0xFC,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0xF0,0x3F,0xF8,0x30,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x1C,0x3F,0xF8,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x0F,0xFC,0x1F,0xFC,0x38,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x0C,0x1F,0xFC,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x3F,0xFC,0x3F,0xFC,0x30,0x00,0x30,0x00,0x30,0x00,0x38,0x0C,0x1F,0xFC,0x0F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0xFE,0x01,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x1F,0xF8,0x1F,0xF8,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x1F,0xFC,0x38,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x0C,0x1F,0xFC,0x0F,0xFC,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x1F,0xF8,0x1F,0xF0,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x3F,0xF0,0x3F,0xF8,0x30,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0xE0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x78,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x1C,0x38,0x0F,0xF0,0x07,0xE0,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x1C,0x18,0x38,0x18,0x70,0x18,0xE0,0x19,0xC0,0x1B,0x80,0x1F,0x00,0x1F,0x00,0x1B,0x80,0x19,0xC0,0x18,0xE0,0x18,0x70,0x18,0x38,0x18,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x07,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0xE0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x3F,0xF8,0x31,0x9C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x3F,0xF8,0x30,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x3F,0xF8,0x30,0x1C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x1C,0x3F,0xF8,0x3F,0xF0,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x1F,0xFC,0x38,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x0C,0x1F,0xFC,0x0F,0xFC,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0xFC,0x37,0xFC,0x3E,0x00,0x3C,0x00,0x38,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x1F,0xF8,0x38,0x1C,0x30,0x00,0x30,0x00,0x38,0x00,0x1F,0xF0,0x0F,0xF8,0x00,0x1C,0x00,0x0C,0x00,0x0C,0x38,0x1C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x3F,0xF0,0x3F,0xF0,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x80,0x01,0xFC,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x0C,0x1F,0xFC,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x06,0x60,0x06,0x60,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x39,0x9C,0x1F,0xF8,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x38,0x1C,0x1C,0x38,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x1C,0x38,0x38,0x1C,0x30,0x0C,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x38,0x0C,0x1F,0xFC,0x0F,0xFC,0x00,0x0C,0x00,0x0C,0x00,0x1C,0x1F,0xF8,0x1F,0xF0,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x01,0xF0,0x03,0x80,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x1E,0x00,0x1E,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x80,0x01,0xF0,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x1F,0x00,0x03,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0xF0,0x00,0xF0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x80,0x1F,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },{ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x0C,0x1F,0x0C,0x3B,0x8C,0x31,0xDC,0x30,0xF8,0x30,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },}; + +#define SCREEN 0x400 +#define BITMAP 0x3000 +#define SCROLL_TOP 10 +#define SCROLL_ROWS FONT_ROWS + +#define TOP_Y (SCROLL_TOP*8+50) +#define BOTTOM_Y (TOP_Y+SCROLL_ROWS*8) + +byte scroll_x = 0; +byte msg_x = 0; +byte msg_index = 0; +byte fonttile_index = 1; + +const byte* get_font_ptr(char ch) { + return FONT[ch - LOCHAR]; +} + +word get_charbitmap_addr(char code) { + return BITMAP + code*8; +} + +const char *MSG = +" HELLO WORLD! THIS IS SOME *BIG*" +" TEXT SCROLLING! THE BITMAP FONT IS" +" 16 X 32 PIXELS." +" EACH TIME WE SCROLL 8 PIXELS," +" WE DRAW INTO 4 CHARACTER TILES," +" DISPLAYING 160 AT ANY GIVEN TIME." +" THE RAINBOW EFFECT IS JUST FROM" +" SETTING CHARACTER COLORS IN COLOR RAM." +" MESSAGE REPEATS .........." +; + +char get_next_char() { + char ch = MSG[msg_index]; + if (ch == 0 || ch == 128) { + msg_index = 0; + ch = MSG[0]; + } + return ch; +} + +byte get_char_for_row(byte row) { + byte x = msg_x; + byte x1 = x % FONT_BWIDTH; + char code = fonttile_index + row; + word bmp = get_charbitmap_addr(code); + char nextchar = get_next_char(); + const char* fptr = get_font_ptr(nextchar) + + row*8*FONT_BWIDTH + + x1; + byte i; + for (i=0; i<8; i++) { + POKE(bmp+i, fptr[i*FONT_BWIDTH]); + } + return code; +} + +void next_msg_column() { + // increment variables + fonttile_index += FONT_ROWS; + if (fonttile_index >= 1+40*FONT_ROWS) { + fonttile_index = 1; + } + if ((++msg_x % FONT_BWIDTH) == 0) { + msg_index++; + } +} + +void draw_right_column() { + // get the top-right corner address of scroll area + word addr = SCRNADR(SCREEN, 39, SCROLL_TOP); + byte row; + // draw one character per row + for (row=0; row new Promise(resolve => setTimeout(resolve, delay)); // for testing