-
Content Count
2,282 -
Joined
-
Last visited
Posts posted by Serguei2
-
-
-
Here a new version.
It plays fine on bluemsx ....
Without sound. Sorry
Does it work on Colecovision?
I get this when I compile the game with sound.
My computer acts weird since it crashed days ago.
I hope you won't lose fun playing Coco without sound.
I'm working on it.
-
3
-
-
-
Ok. It's not often I show my own codes but since it's my first release of a colecovision game, it's fine for me and it's the way to learn new things.
Coco and the evil robots won't run well on real hardware or bluemsx (an emulator.)
So here the source. It might need to clean up as well.
Please add your comments so I know what is changed.
Thanks in advance.
-
Is it released yet?
-
29 minutes ago, jblenkle said:Yeah, same here....it's been the only emulator or hardware that seems to run it correctly.
Works fine on CoolCV.
Alright.
Next time, I'll use bluemsx to check my new games.
I'll ask help if they won't work properly.
-
CCI started acting funny after my computer crashed.
Here the error:
Quotesdcpp.exe: fatal error: when writing output to : Broken pipe
C:\robin\ColecoVision\robin>sdcc -mz80 -c --std-c99 --oldralloc sound2.c
sound2.c:23: syntax error: token -> 'snd_table' ; column 23And the source:
Quote#include <coleco.h>
#include <getput1.h>const byte sound1[] = {
0x40,0xAB,0x01,0x08,0x42,0xAB,0x71,0x08,0x18,0x11,0x50,
};
const byte sound2[] = {
0x80,0x5A,0x00,0x08,0x82,0x5A,0x70,0x08,0x18,0x11,0x90,
};
const byte sound3[] = {
0xC0,0x20,0xF0,0x10,0xD0,0x00,0x00,0x03,0x08,0x02,0x73,0x08,0x18,0x11,0x10,
};
const byte sound0[]={
0x02,0x33,0x0c,0x1c,0x11,0x10
};
const byte noise1[]={
0x00,0x33,0x0c,0x1c,0x11,0x10
};
const byte sound4[]={
0x00,0x39,0xF0,0x10,0xD0,0x00,0x00,0x07,0x08,0x02,0x77,0x08,0x18,0x11,0x10,
0xC0,0x20,0xF0,0x10,0xD0,0x00,0x00,0x07,0x08,0x02,0x77,0x08,0x18,0x11,0x10,
};
const sound_t snd_table[] = {
{sound1,SOUNDAREA1},
{sound2,SOUNDAREA2},
{sound3,SOUNDAREA6},
{sound0,SOUNDAREA4},
{sound4,SOUNDAREA6},
{noise1,SOUNDAREA4},
};const byte gtsNAME[] = {
0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0xFE, 0x20, 0x85, 0x20, 0xFF};const byte gtsPATTERN[] = {
0xFE, 0x00, 0xFE, 0x00, 0x89, 0x00, 0x01, 0x1C, 0x38, 0x82, 0x18, 0x02, 0x00, 0x18, 0x18,
0x82, 0x66, 0x85, 0x00, 0x21, 0x44, 0xFE, 0x44, 0x44, 0xFE, 0x44, 0x00, 0x18, 0x3E, 0x60, 0x3C,
0x06, 0x7C, 0x18, 0x00, 0xFF, 0x81, 0xB9, 0xA5, 0xB9, 0xA5, 0x81, 0xFF, 0x3C, 0x66, 0x3C, 0x38,
0x67, 0x66, 0x3F, 0x00, 0x06, 0x0C, 0x18, 0x84, 0x00, 0x01, 0x0C, 0x18, 0x82, 0x30, 0x04, 0x18,
0x0C, 0x00, 0x30, 0x18, 0x82, 0x0C, 0x08, 0x18, 0x30, 0x00, 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66,
0x82, 0x00, 0x81, 0x18, 0x02, 0x7E, 0x18, 0x18, 0x86, 0x00, 0x81, 0x18, 0x00, 0x30, 0x82, 0x00,
0x00, 0x7E, 0x88, 0x00, 0x81, 0x18, 0x81, 0x00, 0x10, 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00,
0x3C, 0x66, 0xCE, 0xD6, 0xE6, 0xCC, 0x78, 0x00, 0x18, 0x38, 0x83, 0x18, 0x2C, 0x1C, 0x30, 0x0E,
0x1E, 0x36, 0x06, 0xFC, 0xC0, 0xFE, 0x00, 0x0E, 0x1E, 0x36, 0x06, 0x3C, 0x86, 0xFE, 0x00, 0x0E,
0x1E, 0x36, 0x66, 0xFE, 0x06, 0x06, 0x00, 0x1E, 0x3E, 0x70, 0xE0, 0xFC, 0x0E, 0xFE, 0x00, 0x0E,
0x1E, 0x30, 0x60, 0xDE, 0xF2, 0xFE, 0x00, 0x7E, 0xC6, 0x0C, 0x82, 0x18, 0x18, 0x1C, 0x30, 0x1E,
0x3E, 0x66, 0x66, 0xFC, 0xC6, 0xFE, 0x00, 0x3C, 0x66, 0xCE, 0xFE, 0x06, 0x0C, 0x38, 0x00, 0x00,
0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x82, 0x00, 0x0C, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30, 0x0E,
0x18, 0x30, 0x60, 0x30, 0x18, 0x0E, 0x82, 0x00, 0x02, 0x7E, 0x00, 0x7E, 0x82, 0x00, 0x0F, 0x70,
0x18, 0x0C, 0x06, 0x0C, 0x18, 0x70, 0x00, 0x1E, 0x3E, 0x66, 0x06, 0x18, 0x18, 0x00, 0x18, 0x87,
0x00, 0x38, 0x0E, 0x1E, 0x36, 0x66, 0xFE, 0xC6, 0xC6, 0x00, 0x0E, 0x1E, 0x26, 0x66, 0xFC, 0xC6,
0xFE, 0x00, 0x0E, 0x1E, 0x32, 0x60, 0xC0, 0xC2, 0xFE, 0x00, 0xE0, 0xF0, 0xD8, 0xCC, 0xC6, 0xCE,
0xFC, 0x00, 0x0E, 0x1E, 0x30, 0x60, 0xFC, 0xC0, 0xFE, 0x00, 0x0E, 0x1E, 0x30, 0x60, 0xFC, 0xC0,
0xC0, 0x00, 0x0E, 0x1E, 0x32, 0x60, 0xCE, 0xC2, 0xFE, 0x00, 0x26, 0x82, 0x66, 0x05, 0xFE, 0xC6,
0xC6, 0x00, 0x1C, 0x78, 0x83, 0x18, 0x1D, 0x1C, 0x30, 0x0E, 0x1C, 0x0C, 0x0C, 0x4C, 0xCC, 0xFE,
0x00, 0x26, 0x66, 0x6C, 0x78, 0xFC, 0xCE, 0xC6, 0x00, 0x70, 0xE0, 0x60, 0x60, 0x62, 0x66, 0xFE,
0x00, 0x46, 0xEE, 0xFE, 0xD6, 0x82, 0xC6, 0x32, 0x00, 0x42, 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6,
0x00, 0x1C, 0x3E, 0x66, 0xC6, 0xC6, 0xCC, 0x78, 0x00, 0x0E, 0x1E, 0x36, 0x66, 0xFC, 0xC0, 0xC0,
0x00, 0x1C, 0x3E, 0x66, 0xC6, 0xD6, 0xDC, 0x77, 0x00, 0x0E, 0x1E, 0x36, 0x66, 0xF8, 0xCC, 0xC6,
0x00, 0x0E, 0x1E, 0x32, 0x60, 0xFE, 0x06, 0xFE, 0x00, 0x7E, 0xFC, 0x83, 0x30, 0x02, 0x38, 0x60,
0x26, 0x82, 0x66, 0x04, 0xE6, 0xC6, 0xFE, 0x00, 0x26, 0x82, 0x66, 0x22, 0xE6, 0x6C, 0x38, 0x00,
0x62, 0xC6, 0xC6, 0xD6, 0xFE, 0xEE, 0xC4, 0x00, 0x26, 0x66, 0xEC, 0x38, 0x7C, 0xEE, 0xC6, 0x00,
0x26, 0x66, 0xEC, 0x38, 0x18, 0x18, 0x1C, 0x30, 0x3E, 0x66, 0xCC, 0x18, 0x32, 0x66, 0xFE, 0xFE,
0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE,
0x00, 0xFE, 0x00, 0xB2, 0x00, 0xFF};const byte gtsCOLOR[] = {
0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE,
0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE, 0x41, 0xFE,
0x41, 0x8F, 0x41, 0xFF};void main(void)
{
set_snd_table(snd_table);
screen_mode_2_text();
paper(0xc);
rle2vram (gtsPATTERN,0x0000);
rle2vram (gtsCOLOR,0x2000);
rle2vram (gtsNAME,0x1800);
duplicate_pattern();
cls();
screen_on();
print_at(1,1,"PRESS 1, 2, 3 OR 4");
enable_nmi();
loop:
if(keypad_1==1){
disable_nmi();
print_at(1,2,"BOUTON 1");
play_sound(1);
enable_nmi();
}
if(keypad_1==2){
disable_nmi();
print_at(1,2,"BOUTON 2");
play_sound(2);
enable_nmi();
}
if(keypad_1==3){
disable_nmi();
print_at(1,2,"BOUTON 3");
play_sound(3);
play_sound(4);
enable_nmi();
}
if(keypad_1==4){
disable_nmi();
print_at(1,2,"BOUTON 4");
//play_sound(5);
play_sound(6);
enable_nmi();
}
delay(1);
goto loop;
}
void nmi(void) {}These codes work before the crash.
-
8 minutes ago, DuggerVideoGames said:For what it's worth, I've had no issues whatsoever with the game thus far (using ColEm 4.6).
True. But a colecovision game means to play on colecovision, not only on the emulators.
-
It happened to me too with bluemsx.
I which someone reported it when I released it.
-
1 hour ago, DuggerVideoGames said:2,600 pts. I like this game! I was surprised at how quickly the screen disappears after a game over, but it at least displays your high score when you play again (H). I do have a question, however. When you lose a life, you need to get all nine treasures again instead of just how few were remaining at the time you lost your life. Was that deliberate on your part? Not a complaint, just an observation.
That's happened when you write your own games.
Only put anything you like the most without any constrains.
Yeah. Once you lost a life, you need to take 9 treasures again.
I take note any comments in case I would make a sequel.
-
1 minute ago, Northcoastgamer said:Yes absolutely!
2425
23 minutes ago, zaphro72 said:I hope that it runs for me. Last time I tried it it froze up on the phoenix.
I don't have colecovision or phoenix. I only use emulators.
I don't have any ideas if my game works fine on real machine.
Nobody reported this problem when I released it.
-
1
-
-
-
-
I ordered a gameboy advance supercard at May 7th 2020.
After months, I got this from amazon.ca
So my gba supercard is lost.
Thanks to coronavirus.
Super Card SD is a sd card adapter for gameboy advance, the only system I have.
Naturette was created by me using GBAGI, a tool to convert any Sierra AGI games to gameboy advance.
The gameplay is not the best on gba but at least, you don't need to learn C to make gba games.
You need to use menus to make some action.
Once I get supercard, I will start making gba games using C.
-
Parker Brothers Popeye on Colecovision is the smallest Colecovision game released, only 8k.
And it shows.
Here the menu, after Colecovision turned on. No title screen.
Other Parker Brothers games, we see a screen with menu.
Popeye
At least, an intermission is shown.
Here the game.
The tiles seem to be complexe.
To squeeze from an arcade to 8k on Colecovision is remarkable.
Maybe to same money since at this time, chips were expensive.
I'm not sure if Coleco has released 8k games at this time.
-
2
-
-
If SGM was a 3 1/2 inch drive instead of magnetic tape?
-
My laptop crashed. After that, cci won't compile my games.
Any files I need are there. Both SDCC and CCI are installed long time ago.
It just won't find them somehow.
I released Coco and the evil robots with these tools. They should work.
Long time ago, my computer was crashed, films & TV players stopped working.
Another crash fix it.
-
2 hours ago, Loafer said:For sure, pro's and con's on the graphic side.
C64 supports 320x200 graphics. It's more higher than Colecovision.
But some c64 games look like 160x200 instead.
It gives Colecovision an edge.
-
-
Ok. I give it another try today.
main.c
Spoiler// example 1 - a simple Hello World with banked data
// bank switching helpers! To switch banks, we just read the magic address
// bank0 (which is the fixed bank) can be selected with 0xffff
// bank1 can be selected with 0xfffe
// bank2 can be selected with 0xfffd
// ... and so on!
#define SWITCH_IN_BANK1 (*(volatile unsigned char*)0)=(*(volatile unsigned char*)0xfffe);
#define SWITCH_IN_BANK2 (*(volatile unsigned char*)0)=(*(volatile unsigned char*)0xfffd);// sound access (for initialization)
volatile __sfr __at 0xff SOUND;inline void MUTE_SOUND() {
SOUND=0x9f; // mute chan 1
SOUND=0xbf; // mute chan 2
SOUND=0xdf; // mute chan 3
SOUND=0xff; // mute noise
}// VDP access
// Read Data
volatile __sfr __at 0xbe VDPRD;
// Read Status
volatile __sfr __at 0xbf VDPST;
// Write Address/Register
volatile __sfr __at 0xbf VDPWA;
// Write Data
volatile __sfr __at 0xbe VDPWD;// helper for VDP delay between accesses
inline void VDP_SAFE_DELAY() {
__asm
nop
nop
nop
nop
nop
__endasm;
}// helper for register writes
inline void VDP_SET_REGISTER(unsigned char r, unsigned char v) {
VDPWA=(v);
VDP_SAFE_DELAY();
VDPWA=(0x80|(r));
VDP_SAFE_DELAY();
}
inline void VDP_SET_ADDRESS_WRITE(unsigned int x) {
VDPWA=((x)&0xff);
VDP_SAFE_DELAY();
VDPWA=(((x)>>8)|0x40);
VDP_SAFE_DELAY();
}// now that we are printing multiple strings, just a helper function for that
void writeString(unsigned int adr, const char *p) {
// Note: this example is not meant to teach Coleco programming, but
// it is critical that an NMI does not access the VDP while a loop like
// this executes. This sample is safe because the NMI function is a nop
// which never clears the VDP status byte. As a result the interrupt
// fires once and then never again, and even if it did, the NMI handler
// doesn't touch the VDP, so this remains safe.
VDP_SET_ADDRESS_WRITE(adr);
while (*p) {
VDPWD = *(p++);
VDP_SAFE_DELAY();
}
}// references to the data (which is stored in separate banks!)
extern const char * const strBank1;
extern const char * const strBank2;// ** Main entry point **
void main() {
// on entry, the VDP is set up, the audio is muted, so all we need to do is
// write our strings// since the data is in another switched bank, but we are in the fixed bank,
// all we need to do is select the correct bank before we access the data
SWITCH_IN_BANK1;
writeString(0x1800+80+4, strBank1);// and same for the other string
SWITCH_IN_BANK2;
writeString(0x1800+120+4, strBank2);// loop forever, or till reset
for (;;) { }
}// the crt0 calls this function to initialize the VDP and sound
// we use it to set up a simple 40 column text mode- setting match
// the BIOS setup so we don't need to load a character set - if
// you don't have a BIOS this example won't likely work.
void vdpinit() {
unsigned int idx;
const char *p = (const char*)0x15A3; // address of BIOS character set (assumed)// mute the sound chip
MUTE_SOUND();// set up the VDP
VDP_SET_REGISTER(0x00, 0);
VDP_SET_REGISTER(0x01, 0xf0); // VDP_MODE1_16K | VDP_MODE1_UNBLANK | VDP_MODE1_TEXT | VDP_MODE1_INT
VDP_SET_REGISTER(0x02, 0x06); // screen image table at 0x1800
VDP_SET_REGISTER(0x04, 0x00); // pattern table at 0x0000
VDP_SET_REGISTER(0x07, 0xf4); // white text on dark blue// copy in the character set
VDP_SET_ADDRESS_WRITE(0x0000+0x0100); // the character set starts with space, 32 chars in
for (idx = 0; idx < 96*8; idx++) { // 96 characters to copy
VDPWD = *(p++);
VDP_SAFE_DELAY();
}// clear the screen
VDP_SET_ADDRESS_WRITE(0x1800);
for (idx = 0; idx<960; idx++) {
VDPWD = ' ';
VDP_SAFE_DELAY();
}
}text1.c
Spoiler// define a static string in ROM
const char * const strBank1 = "Hello from Bank1";text2.c
Spoilerconst char * const strBank2 = "Hello from Bank2";
The directory
Here the result
After take a look, I noted crt0.lhx is missing.
I tried with crtcv.lhx. It compiled but with a 32k rom instead.
I checked the package but I can't find crt0.lhx either.
-
Thank you.
-
Does TRS 80 model 1 support graphics?
I watched Flight Simulator on youtube.
But again. It's more like using tiles or ascii characters than graphics.
-
Colecovision does not have scrolling hardware.
The only way to scroll is to move tiles.
Tile has 8x8 pixels.
That's why scrolling games need to move 8 pixels at the time.
-
On 6/8/2020 at 8:12 AM, johannesmutlu said:I wonder what would,ve happen if the colecovision was also released in japan, would it had influenced the sales of the famicom??? Remember when nintendo had to come with a call back order to fix certain bugs in the famicom , could coleco could,ve took advantage of this by selling more colecovision systems? Remember donkeykong did help selling the colecovision,
Am curious if the story would,ve been different now ,,or just not
If Coleco was released Colecovision in Japan, it would be expensive and not profitable.
Atari 2600 (2800 in Japan in 1986?) and Commodore 64 are released in Japan.
Both were too expensive to buy.

Colecovision HSC Season 13 - Round 14 - Coco and the Evil Robots
in ColecoVision High Score Club
Posted
Thanks for the feedback.
At least, I see an improvement.
I will take look of it if I can improve it.