summaryrefslogtreecommitdiffstats
path: root/hacks/images/m6502/texture.asm
diff options
context:
space:
mode:
Diffstat (limited to 'hacks/images/m6502/texture.asm')
-rw-r--r--hacks/images/m6502/texture.asm393
1 files changed, 0 insertions, 393 deletions
diff --git a/hacks/images/m6502/texture.asm b/hacks/images/m6502/texture.asm
deleted file mode 100644
index b63d0a2..0000000
--- a/hacks/images/m6502/texture.asm
+++ /dev/null
@@ -1,393 +0,0 @@
-; -*- mode: c; tab-width: 4; fill-column: 128 -*-
-; vi: set ts=4 tw=128:
-
-; Texture, Copyright (c) 2017 Dave Odell <dmo2118@gmail.com>
-;
-; Permission to use, copy, modify, distribute, and sell this software and its
-; documentation for any purpose is hereby granted without fee, provided that
-; the above copyright notice appear in all copies and that both that
-; copyright notice and this permission notice appear in supporting
-; documentation. No representations are made about the suitability of this
-; software for any purpose. It is provided "as is" without express or
-; implied warranty.
-
-; A port of 20 year old QBasic code to a much more modern platform.
-
-
-
-
-
- lda $fe
- sta src_row
-
- ldy #0
-top_loop:
- lda $fe
- and #$f
- sbc #$8
- adc src_row,y
- iny
- sta src_row,y
- cpy #31
- bne top_loop
-
-lda #$00
-sta $0
-lda #$02
-sta $1
-
-init_loop:
- jsr tex
- clc
- lda $0
- adc #$20
- sta $0
- lda $1
- adc #0
- sta $1
- cmp #$06
- bne init_loop
-
-lda #$e0
-sta $0
-lda #$05
-sta $1
-
-loop:
- ;jmp skip_blit
-
- clc
- lda #0
- blit_loop2:
- tay
- lda $0220,y
- sta $0200,y
- lda $0221,y
- sta $0201,y
- lda $0222,y
- sta $0202,y
- lda $0223,y
- sta $0203,y
- lda $0224,y
- sta $0204,y
- lda $0225,y
- sta $0205,y
- lda $0226,y
- sta $0206,y
- lda $0227,y
- sta $0207,y
-
- tya
- adc #8
- bne blit_loop2
-
- clc
- lda #0
- blit_loop3:
- tay
- lda $0320,y
- sta $0300,y
- lda $0321,y
- sta $0301,y
- lda $0322,y
- sta $0302,y
- lda $0323,y
- sta $0303,y
- lda $0324,y
- sta $0304,y
- lda $0325,y
- sta $0305,y
- lda $0326,y
- sta $0306,y
- lda $0327,y
- sta $0307,y
-
- tya
- adc #8
- bne blit_loop3
-
- clc
- lda #0
- blit_loop4:
- tay
- lda $0420,y
- sta $0400,y
- lda $0421,y
- sta $0401,y
- lda $0422,y
- sta $0402,y
- lda $0423,y
- sta $0403,y
- lda $0424,y
- sta $0404,y
- lda $0425,y
- sta $0405,y
- lda $0426,y
- sta $0406,y
- lda $0427,y
- sta $0407,y
-
- tya
- adc #8
- bne blit_loop4
-
- lda #0
- blit_loop5:
- tay
- lda $0520,y
- sta $0500,y
- lda $0521,y
- sta $0501,y
- lda $0522,y
- sta $0502,y
- lda $0523,y
- sta $0503,y
- lda $0524,y
- sta $0504,y
- lda $0525,y
- sta $0505,y
- lda $0526,y
- sta $0506,y
- lda $0527,y
- sta $0507,y
-
- tya
- clc
- adc #8
- cmp #$e0
- bne blit_loop5
-
- skip_blit:
-
- jsr tex
-jmp loop
-
-tex:
- lda $fe
- and #$f
- sbc #$8
- adc src_row
- sta src_row
-
- ldy #0
- tax
- lda pal0,x
- sta ($0),y
- tex_loop0:
- lda $fe
- and #$f
- sbc #$8
- ;clc
- adc src_row,y
- iny
- ;clc
- adc src_row,y
- ror
- sta src_row,y
-
- tax
- lda pal0,x
- sta ($0),y
-
- cpy #31
- bne tex_loop0
- rts
-
-pal0:
- dcb $00, $00, $00, $00, $00, $00, $00, $00
- dcb $00, $00, $0b, $0b, $0b, $0b, $0b, $0b
- dcb $0b, $0b, $0b, $0b, $0b, $0b, $0b, $0b
- dcb $0c, $0c, $0c, $0c, $0c, $0c, $0c, $0c
- dcb $0c, $0c, $0c, $0c, $0c, $0c, $0c, $0c
- dcb $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
- dcb $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
- dcb $0f, $01, $01, $01, $01, $01, $01, $01
- dcb $01, $01, $01, $01, $01, $01, $01, $01
- dcb $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
- dcb $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
- dcb $0f, $0c, $0c, $0c, $0c, $0c, $0c, $0c
- dcb $0c, $0c, $0c, $0c, $0c, $0c, $0c, $0c
- dcb $0c, $0b, $0b, $0b, $0b, $0b, $0b, $0b
- dcb $0b, $0b, $0b, $0b, $0b, $0b, $0b, $00
- dcb $00, $00, $00, $00, $00, $00, $00, $00
- dcb $00, $00, $00, $00, $00, $00, $00, $00
- dcb $00, $00, $00, $00, $00, $00, $00, $00
- dcb $0b, $0b, $0b, $0b, $0b, $0b, $0b, $0b
- dcb $0b, $0b, $0b, $0b, $0b, $0b, $0b, $0b
- dcb $0b, $0b, $0b, $0b, $0b, $0b, $05, $05
- dcb $05, $05, $05, $05, $05, $05, $05, $05
- dcb $05, $05, $05, $05, $05, $05, $05, $05
- dcb $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d
- dcb $0d, $0d, $0d, $0d, $0d, $0d, $0d, $0d
- dcb $0d, $05, $05, $05, $05, $05, $05, $05
- dcb $05, $05, $05, $05, $05, $05, $05, $05
- dcb $05, $05, $05, $0b, $0b, $0b, $0b, $0b
- dcb $0b, $0b, $0b, $0b, $0b, $0b, $0b, $0b
- dcb $0b, $0b, $0b, $0b, $0b, $0b, $0b, $0b
- dcb $0b, $00, $00, $00, $00, $00, $00, $00
- dcb $00, $00, $00, $00, $00, $00, $00, $00
-
-src_row:
- ; (32 bytes)
-
-; A full-resolution version of the same thing. Not perhaps the most interesting thing to look at.
-
-;#include "screenhack.h"
-;
-;#include <inttypes.h>
-;
-;struct texture
-;{
-; unsigned width, height;
-; Colormap colormap;
-; GC gc;
-; unsigned long palette[128];
-; XImage *image;
-; uint8_t *row;
-; unsigned graininess;
-; unsigned lines;
-;};
-;
-;#define GRAIN(self) (NRAND((self)->graininess * 2 + 1) - (self)->graininess)
-;
-;static void _put_line(struct texture *self, Display *dpy, Window window, unsigned y)
-;{
-; unsigned x;
-; for(x = 0; x != self->width; ++x)
-; {
-; unsigned c1 = self->row[x];
-; unsigned c0 = c1;
-; if(c0 & 64)
-; c0 ^= 127;
-; XPutPixel(self->image, x, 0, self->palette[(c0 & 63) | ((c1 & 0x80) >> 1)]);
-; }
-;
-; XPutImage(dpy, window, self->gc, self->image, 0, 0, 0, y, self->width, 1);
-;
-; *self->row += GRAIN(self);
-;
-; for(x = 1; x != self->width; ++x);
-; {
-; unsigned avg = self->row[x - 1] + self->row[x];
-; self->row[x] = ((avg + ((avg & 2) >> 1)) >> 1) + GRAIN(self);
-; }
-;
-;
-;}
-;
-;static void texture_reshape(Display *dpy, Window window, void *self_raw, unsigned w, unsigned h)
-;{
-; struct texture *self = self_raw;
-; unsigned x, y;
-;
-; if(w == self->width && h == self->height)
-; return;
-;
-; self->image->bytes_per_line = 0;
-; self->image->width = w;
-; XInitImage(self->image);
-;
-; free(self->row);
-; self->row = malloc(w);
-; free(self->image->data);
-; self->image->data = malloc(w * self->image->bytes_per_line);
-;
-; self->width = w;
-; self->height = h;
-;
-; *self->row = NRAND(0xff);
-; for(x = 1; x != self->width; ++x)
-; self->row[x] = self->row[x - 1] + GRAIN(self);
-;
-; for(y = 0; y != self->height; ++y)
-; _put_line(self, dpy, window, y);
-;}
-;
-;static void *texture_init(Display *dpy, Window window)
-;{
-; static const XGCValues gcv_src = {GXcopy};
-; XGCValues gcv = gcv_src;
-; struct texture *self = malloc(sizeof(*self));
-; XWindowAttributes xwa;
-; unsigned i;
-;
-; XGetWindowAttributes(dpy, window, &xwa);
-; self->width = 0;
-; self->height = 0;
-; self->colormap = xwa.colormap;
-;
-; self->graininess = get_integer_resource(dpy, "graininess", "Graininess");
-; self->lines = get_integer_resource(dpy, "speed", "Speed");
-;
-; for(i = 0; i != 64; ++i)
-; {
-; XColor color;
-; unsigned short a = i * (0x10000 / 64);
-;
-; color.red = a;
-; color.green = a;
-; color.blue = a;
-; if(!XAllocColor(dpy, xwa.colormap, &color))
-; abort();
-; self->palette[i] = color.pixel;
-;
-; color.red = 0;
-; color.green = a;
-; color.blue = 0;
-; if(!XAllocColor(dpy, xwa.colormap, &color))
-; abort();
-; self->palette[i | 64] = color.pixel;
-; }
-;
-; self->gc = XCreateGC(dpy, window, GCFunction, &gcv);
-; self->image = XCreateImage(dpy, xwa.visual, xwa.depth, ZPixmap, 0, NULL, 0, 1, 32, 0);
-; self->row = NULL;
-;
-; texture_reshape(dpy, window, self, xwa.width, xwa.height);
-;
-; return self;
-;}
-;
-;static unsigned long texture_draw(Display *dpy, Window window, void *self_raw)
-;{
-; struct texture *self = self_raw;
-; unsigned y;
-; XCopyArea(dpy, window, window, self->gc, 0, self->lines, self->width, self->height - self->lines, 0, 0);
-; for(y = 0; y != self->lines; ++y)
-; _put_line(self, dpy, window, self->height - self->lines + y);
-; return 16667;
-;}
-;
-;static Bool texture_event (Display *dpy, Window window, void *self_raw, XEvent *event)
-;{
-; return False;
-;}
-;
-;static void texture_free(Display *dpy, Window window, void *self_raw)
-;{
-; struct texture *self = self_raw;
-;
-; XFreeGC(dpy, self->gc);
-; XFreeColors(dpy, self->colormap, self->palette, 128, 0);
-; XDestroyImage(self->image);
-; free(self->row);
-; free(self);
-;}
-;
-;static const char *texture_defaults[] =
-;{
-; "*speed: 2",
-; "*graininess: 1",
-; "*fpsSolid: True",
-; "*fpsTop: True",
-; 0
-;};
-;
-;static XrmOptionDescRec texture_options[] =
-;{
-; {"-speed", ".speed", XrmoptionSepArg, 0},
-; {"-graininess", ".graininess", XrmoptionSepArg, 0},
-; {0, 0, 0, 0}
-;};
-;
-;XSCREENSAVER_MODULE("Texture", texture)