Subject: [stella] My first (hopefully) finished demo From: "B. Watson" <atari@xxxxxxxxxxxxxx> Date: Wed, 29 Aug 2001 22:31:04 -0400 (EDT) |
This is something I wrote to help me pick good looking colors. Also I wanted to write something simple that I could actually finish in a short time... The only thing that will keep this from being finished is if it turns out not to work on a real Atari... Binary attached to message. Brian -------------------------------------------------------------------------- ; colors.asm ; color tweaker - use to test various color combos ; by B. Watson <atari@xxxxxxxxxxxxxx> ; Tested on z26 v1.46 on a windows machine ; Tested on xstella 1.1 on a linux machine ; *Not* tested on a real Atari (yet) ; v1.0rc1 ; The only reason this is `release candidate 1' rather than v1.0 is ; that it hasn't been tested on a real 2600. processor 6502 include "vcs.h" seg.u vars org $80 framectr ds 1 ; increments once per frame, used for coloring title screen titleflag ds 1 ; 0 if we're showing the title, 1 otherwise ; color registers. These keep track of current color displayed, for each ; section of screen. due to the way check_stick works, bg0-4 must be located ; immediately after color0-4 (don't put any variables in between) color0 ds 1 color1 ds 1 color2 ds 1 color3 ds 1 num_colors = [*-color0]-1 bg0 ds 1 bg1 ds 1 bg2 ds 1 bg3 ds 1 current_color ds 1 ; which of the 4 color regs the player is modifying color_or_bg ds 1 ; (0=color, 1=bg) whether the color reg being modified is color or bg (color+4) hexpointer ds 4 ; vectors for digit font data ctemp ds 1 ; temp used in font calculations (could be used by other routines) p0shape ds 6 ; final result of font calculations, 2 hex digits in one player p1shape ds 6 ; same, for the other 2 digits ptrcolor ds 1 ; the pointer color gets incremented once every 4 frames echo *-$80,"bytes of zero page RAM used" if *>$ff echo "***ERROR: You're all out of zero page RAM!" ; error: we're all out of powdered toast endif seg code org $F000 sei cld ldx #$ff txs lda #0 iloop sta 0,x bne iloop ; now, set everything up to display the title screen ; (this routine also gets called whenever player hits `game reset') game_reset lda #0 sta titleflag ; 0 means `show the title', we check this in main_loop to decide which kernel to run sta color_or_bg ldy #num_colors*2+1 ; more fencepost error... init_colors ; set default colors from ROM lda default_colors,y sta color0,y dey bpl init_colors lda #>hexfont sta hexpointer+1 ; set up hi bytes of pointers sta hexpointer+3 lda #num_colors ; player starts in upper left, color 0 is at bottom of screen, so.. sta current_color lda #5 sta NUSIZ0 ; doublewide p0 ; (we will modify NUSIZ1 inside main_kernel, since the pointer is single ; width, but the 2nd set of digits is double width, and they're both player 1) lda #12 ; p0 is always white sta COLUP0 ; (we modify COLUP1 inside main_kernel, see above) main_loop ; start of TV frame lda #2 sta VSYNC ; start blanking sta WSYNC sta WSYNC lda #44 sta TIM64T ; go ahead & set timer lda #0 sta WSYNC sta VSYNC ; 3 WSYNC's, then turn off VSYNC game_calc inc framectr sta COLUBK ; initially, blank the background (a still 0 from above) lda ptrcolor sta COLUP1 check_switches lda SWCHB ; did player hit game reset? and #1 bne check_stick ; no, so check the joystick jmp game_reset ; yes, so reset the game check_stick ; we really only want to check the stick every so many frames... lda framectr and #$03 bne skip_stick ; skip over input routine unless current frame is multiple of 4 ldx current_color lda color_or_bg ; decide which color reg to modify: color0 + color_or_bg*4 beq skipbg inx inx inx inx ; at this point, X holds the register we need to modify. Let's see what we should ; do with it. No, this isn't the most efficient joystick-checking code ever :) skipbg lda SWCHA asl ; did player move right? bcs skr ; if not, skip the increments inc color0,x ; if so increment twice (since the low bit of the COLU* regs is ignored anyway) inc color0,x skr asl bcs skl dec color0,x dec color0,x skl asl bcs skd tay lda color0,x sbc #15 ; carry is always clear, this actually subtracts 16 sta color0,x tya skd asl bcs sku lda color0,x adc #16 sta color0,x sku check_fire lda framectr and #$07 ; only check fire button every 8 frames (FIXME: need debounce?) bne skip_stick inc ptrcolor ; while we're at it, change pointer color, whether fire pressed or not. lda INPT4 and #$80 ; did player press fire button? bne skip_stick ; if not, skip the rest of this routine, otherwise... lda #2 ; unlatch the triggers sta VBLANK lda titleflag bne not_in_title inc titleflag ; the first time the player hits fire, just set titleflag to 1... bne skip_stick ; ...but don't move the pointer (since it isn't visible yet anyway) not_in_title lda color_or_bg eor #$FF sta color_or_bg ; toggle color_or_bg bne skip_stick ; and if we did set it to zero, that's all we do (effect is move pointer to the right) ldx current_color ; otherwise we need to move the pointer down dex bpl skip_zero ldx #num_colors skip_zero stx current_color skip_stick ;; position player 1 (the pointer) sta WSYNC lda color_or_bg beq reset_p1 ; if color_or_bg == 0, pointer is on the left, so skip positioning ; I was hoping to get by without using HMOVE, but it looks like crap without it. lda #$E0 sta HMP1 sta WSYNC repeat 16 nop repend reset_p1 sta RESP1 sta WSYNC sta HMOVE repeat 13 ; TIA docs say wait at least 24 cycles after HMOVE before modifying HMP* (or HMCLR) nop ; so we actually wait 26. repend sta HMCLR ; done with vblank calculations. Wait for the TV to get to first scan line. wait_timer lda INTIM bne wait_timer ; busy-wait for timer to expire lda #64 ; latch the triggers sta WSYNC sta VBLANK ; let there be graphics! ; decide which kernel to run, based on game mode ; unfortunately this wastes a good chunk of the first scanline... ; ...but we're not displaying anything there anyway. lda titleflag beq title_kernel jmp main_kernel ; Main Kernel Turn On! title_kernel ldy #191-title_bytes ; single (high) resolution, 192 scanlines t_blank_top sta WSYNC dey bpl t_blank_top ldy #title_bytes ; Asymmetrical playfield code. This is the bit I *really* want to ; test on a real Atari (it works ok on z26 and xstella) draw_t_pf sta WSYNC sta COLUPF ; 3 lda left_title0,y ; 4 sta PF0 ; 3 lda left_title1,y ; 4 sta PF1 ; 3 lda left_title2,y ; 4 sta PF2 ; 3 (so far, 24 cycles. the first 22.6 are during horiz. blank) lda right_title1,y ; 4 ldx right_title2,y ; 4 nop ; 2 nop ; 2 nop ; 2 sta PF1 ; 3 lda right_title0,y ; 4 sta PF0 ; 3 (why does this work? we're at 48 cycles past WSYNC, 26 past first visible color clock) stx PF2 ; 3 (29 past 1st visible, and done modifying PF* regs) tya adc framectr ; load A with next scanline's color dey bne draw_t_pf end_kernels ; common code (jmp'ed to by main_kernel) sta WSYNC ; finish last scanline lda #37 ; set overscan timer sta TIM64T lda #66 ; latch triggers and disable TIA graphics sta VBLANK ldy #0 sty COLUPF ; blank playfiels sty PF0 sty PF1 sty PF2 ; calculate offset to data for hi digit ldx current_color lda color0,x ; in C, a = (a >> 4) * 5; and #$F0 ; hi nybble first lsr lsr ; now we have: 0, 4, 8...,60 sta ctemp ; in ctemp lsr ; finish shifting lsr ; now we have 0, 1, 2...,15 in A clc adc ctemp ; now we have 0, 5, 10...,75 in A sta hexpointer ; stash it lda color0,x ; now the low digit... ; in C, a = (a & 0x0F) * 5; and #$0F sta ctemp asl asl ; a = (a * 4) ... clc adc ctemp ; plus a, gives us a*5 sta hexpointer+2 ; *whew* ; now we've got hexpointer as a pointer to the 5 bytes worth of ; font data we are wanting to draw for this digit... ldy #4 make_shape ; draw into RAM to simplify kernel (needs 5 bytes) lda (hexpointer),y ; we're doing the high digit, so we need to shift the data up 4 bits asl asl asl asl sta ctemp lda (hexpointer+2),y ; now get the low digit, which doesn't need to be shifted ora ctemp sta p0shape,y dey bpl make_shape ; get the next byte, until we're done. ; #define LAME_CUT_AND_PASTE ldx current_color lda bg0,x and #$F0 ; hi nybble first lsr lsr ; now we have: 0, 4, 8...,60 sta ctemp ; in ctemp lsr ; finish shifting lsr ; now we have 0, 1, 2...,15 in A clc adc ctemp ; now we have 0, 5, 10...,75 in A sta hexpointer ; stash it lda bg0,x ; now the low digit... and #$0F sta ctemp asl asl ; a = (a * 4) ... clc adc ctemp ; plus a, gives us a*5 ;ora hexpointer ; grab top 4 bits from hi nybble calc sta hexpointer+2 ; *whew* ldy #4 make_shape2 ; draw into RAM to simplify kernel (needs 5 bytes) lda (hexpointer),y asl asl asl asl sta ctemp lda (hexpointer+2),y ora ctemp sta p1shape,y dey bpl make_shape2 ;ARGH what a waste. But it works. ; #undef LAME_CUT_AND_PASTE ; we're done with overscan calculations, so wait for the timer to run ; out and tell us it's time to start a new frame. t_overscan lda INTIM bne t_overscan jmp main_loop ; time's up, start new frame now. org [>.+1]*256 main_kernel ldy #96-[main_bytes*4]-1 ; single (high) resolution, 192 scanlines ldx #num_colors txs ; use stack ptr as temp register, since we never use the stack! m_blank_top sta WSYNC dey bne m_blank_top draw_one_section sta WSYNC ; maybe not need this here tya ; lda #0 lda color0,x sta COLUPF lda bg0,x sta COLUBK cpx current_color bne no_player1 lda ptrcolor no_player1 sta COLUP1 ldy #main_bytes draw_m_pf lda ptrshape,y sta GRP1 sta WSYNC lda left_main0,y ; 3 sta PF0 ; 5 lda left_main1,y ; 8 sta PF1 ; 10 lda left_main2,y ; 13 sta PF2 ; 15 sta WSYNC dey bne draw_m_pf sty GRP1 tsx dex txs bpl draw_one_section repeat 8 nop repend sta RESP1 lda #0 ; waste one scan line turning bottom background black ldy #12 ; ...and player 1 white... ldx #5 ; ...and player 1 double-wide sty COLUP1 sta WSYNC stx NUSIZ1 sta PF0 sta PF1 sta PF2 sta COLUBK ldy #4 ; draw player for 5 scanlines draw_digits sta WSYNC sta RESP0 lda p0shape,y ; we calculated this last overscan period sta GRP0 lda p1shape,y sta GRP1 sta WSYNC ; display it twice sta WSYNC ; display it thrice dey bpl draw_digits sta WSYNC lda #0 sta GRP0 ; done drawing player sta GRP1 ; done drawing player sta NUSIZ1 ; currently 10 scanlines left ; ldy #4 ;t_blank_bottom ; sta WSYNC ; dey ; bne t_blank_bottom jmp end_kernels ; our work is done here... org $F800 ; 4x5 hex font, upside-down, low nybble only hexfont hex0 byte %00000010 byte %00000101 byte %00000101 byte %00000101 byte %00000010 hex1 byte %00000111 byte %00000010 byte %00000010 byte %00000110 byte %00000010 hex2 byte %00000111 byte %00000100 byte %00000010 byte %00000001 byte %00000110 hex3 byte %00000110 byte %00000001 byte %00000110 byte %00000001 byte %00000110 hex4 byte %00000001 byte %00000001 byte %00000111 byte %00000101 byte %00000001 hex5 byte %00000110 byte %00000001 byte %00000111 byte %00000100 byte %00000111 hex6 byte %00000111 byte %00000101 byte %00000111 byte %00000100 byte %00000011 hex7 byte %00000010 byte %00000010 byte %00000001 byte %00000001 byte %00000111 hex8 byte %00000111 byte %00000101 byte %00000010 byte %00000101 byte %00000111 hex9 byte %00000110 byte %00000001 byte %00000111 byte %00000101 byte %00000111 hexA byte %00000101 byte %00000101 byte %00000111 byte %00000101 byte %00000010 hexB byte %00000111 byte %00000101 byte %00000110 byte %00000101 byte %00000110 hexC byte %00000011 byte %00000100 byte %00000100 byte %00000100 byte %00000011 hexD byte %00000110 byte %00000101 byte %00000101 byte %00000101 byte %00000110 hexE byte %00000111 byte %00000100 byte %00000111 byte %00000100 byte %00000111 hexF byte %00000100 byte %00000100 byte %00000111 byte %00000100 hexfont_end byte %00000111 hexfont_size = hexfont_end - hexfont echo "hexfont_size is",hexfont_size default_colors byte $0a,$2a,$3a,$4a,$00,$10,$20,$30 ptrshape ; main_bytes bytes, which is 24 now I think byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %10000000 byte %11000000 byte %11100000 byte %11000000 byte %10000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 org $F900 ; these tables were in include files generated by a script, ; but I put them in here so the source would be self-contained left_title0 byte %00000000 byte %00000000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01110000 byte %01110000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %01110000 byte %01110000 byte %01110000 byte %01110000 byte %01110000 byte %01110000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %00010000 byte %01100000 byte %01100000 byte %01100000 byte %01100000 byte %01100000 byte %01100000 byte %00000000 byte %00000000 title_bytes = [.-left_title0]-1 org [>.]*256+256 left_title1 byte %00000000 byte %00000000 byte %10101010 byte %10101010 byte %10101010 byte %10101010 byte %10101010 byte %10101010 byte %10101010 byte %10101010 byte %11101100 byte %11101100 byte %10101010 byte %10101010 byte %10101010 byte %10101010 byte %01001100 byte %01001100 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00001111 byte %00001111 byte %00010000 byte %00010000 byte %00010110 byte %00010110 byte %00010100 byte %00010100 byte %00010100 byte %00010100 byte %00010110 byte %00010110 byte %00010000 byte %00010000 byte %00001111 byte %00001111 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %01001110 byte %01001110 byte %01001110 byte %01001110 byte %01001110 byte %01001110 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %01001000 byte %01001000 byte %01001000 byte %01001000 byte %01001000 byte %01001000 byte %00000000 byte %00000000 org [>.]*256+256 left_title2 byte %00000000 byte %00000000 byte %01100011 byte %01100011 byte %00010101 byte %00010101 byte %00010101 byte %00010101 byte %00010101 byte %00010101 byte %00010101 byte %00010101 byte %00010101 byte %00010101 byte %00010101 byte %00010101 byte %01100011 byte %01100011 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %10011100 byte %10011100 byte %01000101 byte %01000101 byte %01000101 byte %01000101 byte %01000101 byte %01000101 byte %01001001 byte %01001001 byte %01010001 byte %01010001 byte %01010001 byte %01010001 byte %10001100 byte %10001100 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %01010010 byte %01010010 byte %01010010 byte %01010010 byte %01010010 byte %01010010 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %00110101 byte %00110101 byte %00110101 byte %00110101 byte %00110101 byte %00110101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %00110010 byte %00110010 byte %00110010 byte %00110010 byte %00110010 byte %00110010 byte %00000000 byte %00000000 org [>.]*256+256 right_title0 byte %00000000 byte %00000000 byte %00100000 byte %00100000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %00100000 byte %00100000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %10000000 byte %10000000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %01010000 byte %10000000 byte %10000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %00100000 byte %01110000 byte %01110000 byte %01110000 byte %01110000 byte %01110000 byte %01110000 byte %00000000 byte %00000000 org [>.]*256+256 right_title1 byte %00000000 byte %00000000 byte %11001110 byte %11001110 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101100 byte %10101100 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %11001110 byte %11001110 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00111000 byte %00111000 byte %10010000 byte %10010000 byte %10010000 byte %10010000 byte %10010000 byte %10010000 byte %10010000 byte %10010000 byte %10010000 byte %10010000 byte %10110000 byte %10110000 byte %00010000 byte %00010000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %10101110 byte %10101110 byte %10101110 byte %10101110 byte %10101110 byte %10101110 byte %11101000 byte %11101000 byte %11101000 byte %11101000 byte %11101000 byte %11101000 byte %11101100 byte %11101100 byte %11101100 byte %11101100 byte %11101100 byte %11101100 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101000 byte %10101110 byte %10101110 byte %10101110 byte %10101110 byte %10101110 byte %10101110 byte %00000000 byte %00000000 org [>.]*256+256 right_title2 byte %00000000 byte %00000000 byte %00110101 byte %00110101 byte %01000101 byte %01000101 byte %01000101 byte %01000101 byte %01000101 byte %01000101 byte %00100011 byte %00100011 byte %00010101 byte %00010101 byte %00010101 byte %00010101 byte %01100011 byte %01100011 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %00110111 byte %00110111 byte %00110111 byte %00110111 byte %00110111 byte %00110111 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010101 byte %01010010 byte %01010010 byte %01010010 byte %01010010 byte %01010010 byte %01010010 byte %00000000 byte %00000000 org [>.]*256+256 left_main0 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 byte %11000000 main_bytes = [.-left_main0]-1 left_main1 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 byte %11111100 left_main2 byte %00000000 byte %00000000 byte %00000000 byte %00000000 byte %11111111 byte %11111111 byte %11111111 byte %11111111 byte %10000001 byte %10000001 byte %10000001 byte %10000001 byte %10000001 byte %10000001 byte %10000001 byte %10000001 byte %11111111 byte %11111111 byte %11111111 byte %11111111 ; echo *-$F900,"bytes of included data" org $FFFC word $F000 word $F000
Attachment:
colortw1.bin
Description: Binary data
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[stella] the most difficult part, Glenn Saunders | Thread | Aw: [stella] My first (hopefully) f, cybergoth |
Re: [stella] Death Derby, Steveg1138 | Date | Re: [stella] Real 3D Space Calculat, Roger Williams |
Month |