From 07a0f97245c1daedf10c27da66edee5ae0423634 Mon Sep 17 00:00:00 2001 From: Steven Hugg Date: Fri, 10 Nov 2017 11:16:28 -0500 Subject: [PATCH] added CV alt. rom to romsrc/ --- emsrc/cc65/Makefile.local | 28 ++++ emsrc/cc65/build.sh | 3 + mame/roms/coleco/313 10031-4005 73108a.u2 | Bin presets/coleco/frogs.c | 195 ++++++++++++++++++++++ {mame/roms => romsrc}/coleco/Makefile | 5 + {mame/roms => romsrc}/coleco/minbios.asm | 0 6 files changed, 231 insertions(+) create mode 100644 emsrc/cc65/Makefile.local create mode 100755 emsrc/cc65/build.sh mode change 100755 => 100644 mame/roms/coleco/313 10031-4005 73108a.u2 create mode 100644 presets/coleco/frogs.c rename {mame/roms => romsrc}/coleco/Makefile (55%) rename {mame/roms => romsrc}/coleco/minbios.asm (100%) diff --git a/emsrc/cc65/Makefile.local b/emsrc/cc65/Makefile.local new file mode 100644 index 00000000..552ec950 --- /dev/null +++ b/emsrc/cc65/Makefile.local @@ -0,0 +1,28 @@ + +%.js: bin/%.bc + emcc -O2 --memory-init-file 0 \ + -s ASM_JS=1 \ + -s MODULARIZE=1 \ + -s EXPORT_NAME=\"'$*'\" \ + -s 'EXTRA_EXPORTED_RUNTIME_METHODS=["FS"]' \ + -s FORCE_FILESYSTEM=1 \ + bin/$*.bc -o $@ $(ARGS_$*) + +bin/%.bc: + mkdir -p bin js + emmake make $* + cp bin/$*.exe bin/$*.bc + +emscripten: include asminc cfg lib/apple2.lib target/apple2 + cp -rp src Makefile js + make -C js cc65.js ca65.js co65.js ld65.js + +fs65.js: + python $(EMSCRIPTEN)/tools/file_packager.py fs65.data \ + --preload include asminc cfg \ + lib/apple2.lib target/apple2 \ + lib/nes.lib target/nes \ + neslib/nes.cfg@cfg/neslib.cfg \ + neslib/neslib.lib@lib/neslib.lib \ + neslib/neslib.h@include/neslib.h \ + --separate-metadata --js-output=fs65.js diff --git a/emsrc/cc65/build.sh b/emsrc/cc65/build.sh new file mode 100755 index 00000000..6fc8fe4e --- /dev/null +++ b/emsrc/cc65/build.sh @@ -0,0 +1,3 @@ +#!/bin/sh +emmake make -f Makefile.local CC=emcc + diff --git a/mame/roms/coleco/313 10031-4005 73108a.u2 b/mame/roms/coleco/313 10031-4005 73108a.u2 old mode 100755 new mode 100644 diff --git a/presets/coleco/frogs.c b/presets/coleco/frogs.c new file mode 100644 index 00000000..8cc251c7 --- /dev/null +++ b/presets/coleco/frogs.c @@ -0,0 +1,195 @@ + +#include +#include + +#include "cv.h" +#include "cvu.h" + +#define SPRITE_PATTERNS ((const cv_vmemp)0x3800) +#define SPRITES ((const cv_vmemp)0x3c00) + +typedef unsigned char byte; +typedef signed char sbyte; +typedef unsigned short word; + +uintptr_t __at(0x6a) font_bitmap_a; +uintptr_t __at(0x6c) font_bitmap_0; + +volatile bool vint; +volatile uint_fast8_t vint_counter; + +void vint_handler(void) +{ + vint = true; + vint_counter++; +} + +#define NUM_SPRITE_PATTERNS 5 + +const byte sprite_table[NUM_SPRITE_PATTERNS][16*2] = { + /*{w:16,h:16,remap:[4,0,1,2,3,5,6,7,8,9],brev:1,count:4}*/ + { // first plane + 0x00, 0x00, 0x00, 0x02, 0x01, 0x06, 0x01, 0x07, + 0x1F, 0x7F, 0xFF, 0xEF, 0xF3, 0x7C, 0x3E, 0x2A, + 0x00, 0x00, 0x80, 0x80, 0x70, 0xF8, 0xEC, 0xFE, + 0xC0, 0xFC, 0xFE, 0xEF, 0xDE, 0xDC, 0x3C, 0x2A, + },{ + 0x02, 0x01, 0x06, 0x02, 0x19, 0x07, 0x0F, 0x1F, + 0x3F, 0x7F, 0x77, 0x73, 0x30, 0x38, 0x3E, 0x2A, + 0x38, 0x6C, 0xFE, 0xFE, 0x80, 0xEF, 0xF0, 0xFC, + 0xC0, 0xFC, 0xFE, 0xCE, 0x1C, 0x18, 0x3C, 0x2A, + },{ + 0x04, 0xC5, 0xA2, 0x51, 0x2A, 0x17, 0x0E, 0x1B, + 0x64, 0x89, 0x90, 0x61, 0x00, 0x01, 0x00, 0x00, + 0x20, 0xA3, 0x45, 0x8A, 0x54, 0xF8, 0x60, 0xD8, + 0xA6, 0x11, 0x89, 0x06, 0x80, 0x00, 0x80, 0x00, + },{ + 0x04, 0x05, 0x02, 0xE1, 0xDA, 0x3F, 0x06, 0x7B, + 0x8E, 0x91, 0x60, 0x01, 0x00, 0x01, 0x00, 0x00, + 0x20, 0xA0, 0x40, 0x87, 0x5B, 0xFC, 0x70, 0xEE, + 0xF1, 0x09, 0x86, 0x00, 0x80, 0x00, 0x80, 0x00, + } +}; + +/// + +const unsigned char reverse_lookup[16] = { +0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe, 0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf, }; + +byte reverse_bits(byte n) { + return (reverse_lookup[n&0b1111] << 4) | reverse_lookup[n>>4]; +} + +void flip_sprite_patterns(word dest, const byte* patterns, word len) { + word i; + for (i=0; i= Y_FLOOR) + player_jump = 0; + } +} + +void move_bug() { + bug.x += bug_dir; +} + +void place_new_bug() { + bug.y = (rand() & 0x3f) + Y_CEILING; + if (rand() & 1) { + bug.x = 0; + bug_dir = 1; + } else { + bug.x = 255; + bug_dir = -1; + } +} + +void check_collision() { + if (cv_get_sprite_collission()) { + place_new_bug(); + player_jump = 2; // settle back down + } +} + +void play_scene() { + while (1) { + wait_vsync(); + draw_sprites(); + move_player(); + move_bug(); + check_collision(); + } +} + +void init_sprites() { + player.x = 128; + player.y = Y_FLOOR; + player.tag = CV_COLOR_GREEN; + player_jump = 0; + player_dir = 0; + + bug.tag = CV_COLOR_BLUE; + place_new_bug(); +} + +void main() { + setup_32_column_font(); + cv_set_screen_active(true); + cv_set_vint_handler(&vint_handler); + + init_sprites(); + play_scene(); +} diff --git a/mame/roms/coleco/Makefile b/romsrc/coleco/Makefile similarity index 55% rename from mame/roms/coleco/Makefile rename to romsrc/coleco/Makefile index e623b917..f58ac1e1 100644 --- a/mame/roms/coleco/Makefile +++ b/romsrc/coleco/Makefile @@ -1,5 +1,10 @@ all: minbios.rom + mkdir -p ../../mame/roms/coleco + cp $< ../../mame/roms/coleco/"313 10031-4005 73108a.u2" + +clean: + rm -f minbios.rom %.rom: %.asm naken_asm -b $< diff --git a/mame/roms/coleco/minbios.asm b/romsrc/coleco/minbios.asm similarity index 100% rename from mame/roms/coleco/minbios.asm rename to romsrc/coleco/minbios.asm