Jump to content

Photo

DIY Coleco 63 in 1 multicart


8 replies to this topic

#1 zCRP OFFLINE  

zCRP

    Space Invader

  • 37 posts

Posted Thu Nov 1, 2018 6:00 AM

Hi, I just finished building myself a multicart, following the very cool project by these French guys:

 

http://zx81.zx81.fre...-Cartridge.html

 

I was able to successfully build the loader (after modifying some bits), assembled with all the roms and burned to PROMs.

 

Now, if I run the multirom image in mame, everything works perfectly. This is a screenshot of the loader:

mame.png

I can browse the games, and upon firing, the correct ROM is started.

 

But if I place the cart into my real Coleco (a French model), I get the following:

Actual_CV.JPG

The loader does actually work. I can scroll up and down (the left-most character moves accordingly), and upon firing the correct rom is started. But instead of a readable game list I just get mostly gibberish.

 

The loader initialized the screen like this:

  disable_nmi();
  screen_mode_1_text();
  fill_vram0(0x2000,0x1800,0xf0);
  upload_default_ascii(NORMAL);
  paper(COLOR);
  enable_nmi();
  cls();
  screen_on();

While text is printed to screen with print_at() and center_string() calls.

 

Am I missing something?

 

Also, in the emu, upon resetting I get back to the loader, while on the actual CV, reset restarts the currently selected game, and I need to actually turn off and on again the CV to get back to the loader.

 

Thanks for any suggestions!



#2 atariramy OFFLINE  

atariramy

    Space Invader

  • 10 posts
  • Location:Egypt

Posted Thu Nov 1, 2018 9:20 AM

very good job  :thumbsup:  :thumbsup:



#3 alekmaul OFFLINE  

alekmaul

    Chopper Commander

  • 190 posts
  • Location:Blois (France)

Posted Thu Nov 1, 2018 11:05 PM

Are you sure about your burning process ?

I have also a burnt rom on a cv cart from zx81 (31in1, not 63) and it works fine on a real CV.



#4 zCRP OFFLINE  

zCRP

    Space Invader

  • Topic Starter
  • 37 posts

Posted Fri Nov 2, 2018 2:18 AM

Are you sure about your burning process ?

I have also a burnt rom on a cv cart from zx81 (31in1, not 63) and it works fine on a real CV.

 

I believe the burning process is ok, since everything works except the loader which has corrupt text. I mentioned it above, but the important thing is that I modified the original loader quite a bit. The issue is that the modified loader works perfectly in an emulator, but not on a real CV...



#5 alekmaul OFFLINE  

alekmaul

    Chopper Commander

  • 190 posts
  • Location:Blois (France)

Posted Fri Nov 2, 2018 1:39 PM

can it be a RAM issue ? are you sure you are not using too much ram ?

Please, post or take a look at your sym file to know how much memory you are using.



#6 zCRP OFFLINE  

zCRP

    Space Invader

  • Topic Starter
  • 37 posts

Posted Thu Nov 8, 2018 4:32 PM

Not sure how to read such a sym file. Here is the one for my main.c

ASxxxx Assembler V02.00 + NoICE + SDCC mods  (Zilog Z80 / Hitachi HD64180), page 1.
Hexadecimal [16-Bits]

Symbol Table

    .__.$$$.                                                    =  2710 L
    .__.ABS.                                                    =  0000 G
    .__.CPU.                                                    =  0000 L
    .__.H$L.                                                    =  0000 L
  0 ___str_0                                                       0126 R
  0 ___str_1                                                       0143 R
  0 ___str_2                                                       0149 R
  0 ___str_3                                                       01B2 R
  0 ___str_4                                                       01D3 R
  0 ___str_5                                                       02E1 R
  0 ___str_6                                                       02EB R
    __modsint                                                      **** GX
    __moduchar                                                     **** GX
    _center_string                                                 **** GX
    _cls                                                           **** GX
    _delay                                                         **** GX
    _disable_nmi                                                   **** GX
  0 _display_banner                                                0198 GR
  0 _display_banner_dx                                             003E GR
  0 _display_game_list                                             01F4 GR
    _enable_nmi                                                    **** GX
    _fill_vram0                                                    **** GX
    _game_loader_exec                                              **** GX
    _get_game_name                                                 **** GX
  0 _get_game_select                                               02F7 GR
  0 _init_screen                                                   0001 GR
  0 _init_sound                                                    002D GR
    _joypad_1                                                      **** GX
  0 _load_game                                                     0276 GR
  0 _main                                                          03E8 GR
  0 _nmi                                                           0000 GR
    _paper                                                         **** GX
    _play_sound                                                    **** GX
    _print_at                                                      **** GX
    _screen_mode_1_text                                            **** GX
    _screen_on                                                     **** GX
    _strcpy                                                        **** GX
    _strlen                                                        **** GX
    _upload_default_ascii                                          **** GX

ASxxxx Assembler V02.00 + NoICE + SDCC mods  (Zilog Z80 / Hitachi HD64180), page 2.
Hexadecimal [16-Bits]

Area Table

   0 _CODE                                      size  468   flags    0
   1 _DATA                                      size    0   flags    0
   2 _INITIALIZED                               size    0   flags    0
   3 _DABS                                      size    0   flags    8
   4 _HOME                                      size    0   flags    0
   5 _GSINIT                                    size    0   flags    0
   6 _GSFINAL                                   size    0   flags    0
   7 _INITIALIZER                               size    0   flags    0
   8 _CABS                                      size    0   flags    8

Also, which .sym files should I consider? Must those for the .lib files be included as well?

 

Thanks



#7 newcoleco OFFLINE  

newcoleco

    Stargunner

  • 1,324 posts
  • Always Tired
  • Location:Quebec

Posted Sat Nov 10, 2018 7:00 AM

Hello,

 

Without seeing your source code and the version of the devkit you are using, it is difficult to identify exactly the issue.

 

But, to be sure to remove any glitch causing some VRAM corruption, I would try this:


Init. like this...

  disable_nmi();
  screen_mode_1_text(); /* screen graphics mode 1 and clear screen (old version also set screen on by default) */
  screen_off(); /* in case using an old version of screen_mode_1_text */
  disable_nmi(); /* always good to be sure NMI is disable before a massive VRAM update */
  fill_vram0(0x2000,0x1800,0xf0);
  upload_default_ascii(NORMAL);
  paper(COLOR); /* is COLOR value set somewhere? */
  /* cls(); - is good but not needed. See screen_mode_1_text description */
  screen_on();
  enable_nmi(); /* always good to enable NMI only after all the VRAM manipulations */

And if it's a case of NMI triggered during VRAM manipulation that causes the glitch.
  delay(1); /* Update VRAM right after NMI interupt is done, so wait a bit */
  disable_nmi(); /* You may also want to disable NMI, but should not be necessary */
  print...;
  print...;
  enable_nmi(); /* once all the print text on screen is done, enable NMI */

This way, you should avoid graphic glitches caused by NMI... as much as possible. 

Good luck!

 

Hi, I just finished building myself a multicart, following the very cool project by these French guys:

 

http://zx81.zx81.fre...-Cartridge.html

 

I was able to successfully build the loader (after modifying some bits), assembled with all the roms and burned to PROMs.

 

Now, if I run the multirom image in mame, everything works perfectly. This is a screenshot of the loader:

attachicon.gifmame.png

I can browse the games, and upon firing, the correct ROM is started.

 

But if I place the cart into my real Coleco (a French model), I get the following:

attachicon.gifActual_CV.JPG

The loader does actually work. I can scroll up and down (the left-most character moves accordingly), and upon firing the correct rom is started. But instead of a readable game list I just get mostly gibberish.

 

The loader initialized the screen like this:

  disable_nmi();
  screen_mode_1_text();
  fill_vram0(0x2000,0x1800,0xf0);
  upload_default_ascii(NORMAL);
  paper(COLOR);
  enable_nmi();
  cls();
  screen_on();

While text is printed to screen with print_at() and center_string() calls.

 

Am I missing something?

 

Also, in the emu, upon resetting I get back to the loader, while on the actual CV, reset restarts the currently selected game, and I need to actually turn off and on again the CV to get back to the loader.

 

Thanks for any suggestions!



#8 zCRP OFFLINE  

zCRP

    Space Invader

  • Topic Starter
  • 37 posts

Posted Sun Nov 11, 2018 8:56 AM

Thanks for the pointers. I wrote the roms to OTPs, so I cannot do a second run for now. I am now waiting for some EPROMS and an UV eraser to arrive from China ;)

 

The source code I used (with some changes) is available here:

http://zx81.zx81.fre...-Cartridge.html

 

The Kit I am using has the following in the README:

ColecoVision Startkit (for SDCC)
Made by Daniel Bienvenu, 2009-2010.


DATE : 26-AUGUST-2011

Is this the most appropriate to use? What is the best source describing all the APIs and usage? I must be quite frank, I just took the original source and the dev kit, built the libs, had to hack around a bit to get the loader compiling, and then I mostly focused on changing what is printed on the screen. I have no idea about NMIs, screen modes etc.

 


Edited by zCRP, Sun Nov 11, 2018 8:58 AM.


#9 alekmaul OFFLINE  

alekmaul

    Chopper Commander

  • 190 posts
  • Location:Blois (France)

Posted Mon Nov 12, 2018 11:15 PM

as Daniel said, please share source code, it will be really easer to help you.

Regarding sym file, I need the complete one for the global project (perhaps it is a map file which the tools you used).






0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users