Jump to content

newcoleco

Members
  • Posts

    1,353
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by newcoleco

  1. This link was requested by Peter Boon.

     

    It's a slideshow demo made more than 3 years ago using 4 different data compression : Pletter, Dan1, Dan3, and ZX7.

    Because Dan1 and Dan3 were made to focus on bitmap screens, and Dan3 for full screen pixelart and pictures with dithering, Dan3 performs better in this demo.

    However, because we tend to draw graphics in a way to somewhat be simple to compress, Dan2 is a better option for our game projects, often better than Pletter.

     

    https://drive.google.com/file/d/1x6r7YHc65ViaXp_VkApPwngLivFeJdso/view?usp=sharing

    • Like 3
  2. On 1/18/2020 at 3:26 PM, ChildOfCv said:

    Is this a Colecovision software limitation?  Because the datasheet for the sound chip doesn't mention any interaction between channel 3 and noise.

     

    Well, I'm finally in the process of writing diags for the sound chip, so I guess I'll find out soon enough.

    It's a hardware thing. The sound chip specifications are telling us that we can use the "frequency" data from the channel tone 3 as an input for the noise channel if this one is set for it. I do use this "peculiar chemistry" in all my ColecoVision musics. The mode 3 on the noise channel is called PERIODIC NOISE tuned with the TONE 3 (sort of) to produce a BASS instrument sound. The mode 7 on the noise channel is called WHITE NOISE tuned with the TONE 3 channel, allowing for cool explosions sound effects without being limited to only 3 presets of white noises.

  3. 3 hours ago, Mike Harris said:

    Pretty damn good....

    Just as a viewer from the outside looking in...
     

    Can that be adapted to a working game or does it take the entire processing power of the Colecovision?

    I can pretty much guarantee you that not one of the original developers of the Colecovision would have ever dreamed this was possible.

    Can you imagine if this kind of music came out from the beggining.

    Coleco would have dominated the market.

    Thank you!

     

    Beside decoding the data written in the new format I've invented, and using a little bit of RAM to store pointers and instrument codes, these sounds are played by the ColecoVision BIOS sounds routine. Therefore, this doesn't use that much extra CPU power than regular CV sounds. By exploiting the BIOS power, I was able to plugin my routines and avoid adding too much codes in the ROM. All the sounds priorities and effects are for the most part from within the BIOS. 

     

    In other words, this could have been implemented and used back in the 80s without a doubt.

    • Like 1
    • Thanks 1
  4. 15 hours ago, Tony Cruise said:

    Code now working for all three platforms i.e Colecovision, MSX and Spectravideo, article complete, just need to get a break from family stuff to actually record it :)

     

    You are fast!

     

    Meanwhile, after hours of work, I've finally fixed a special tiny sounds routine bug and converted (most of) my ColecoVision Commando music based into tiny sounds. It sounds similar to the original without some nuances only possible by coding every notes by hand.

     

    More than half the data size was saved by using this new format.

     

    Bugfix : Removed the unneeded RESET " (ix+7),0 " that was stopping the special code 3 to play fully if the duration was more than 1 unit of time. This is important for the special drum code 0xfe and the freq and volume swept code 0x03 (see CV BIOS sound format).

     

    Music Commando (src) with updated tiny sounds routines TinyMusic - Commando - src.zip

    Music Commando (bin) both original and tiny sounds versions : TinyMusic - Commando - bin.zip

    • Like 1
    • Thanks 1
  5. 8 hours ago, Mike Harris said:

    My real fantasy would be if someone had the file and sound format to Video Tunes so we could use that to compose and retrieve the logic in Assembly.

    There is a guy on Youtube named Steve Simpson that says he programed Video Tunes and I have reached out to him with zero success.

     

    I have no idea what is Video Tunes.

  6. On 8/8/2019 at 3:03 AM, Mike Harris said:

    I don't suppose you could create a simple interface that you type in a series of notes from some sheet music or a simple tune then it outputs compileable assembly code...

    Just checking.

     

    Music and Sound effects seem to be the hardest part of Coleco programing.

     

    One step at a time - I'm getting closer to a stable sounds player with vibrato and arpeggio support.

     

    This is just a spark, an idea of routines based on my way to compose music with a bonus of data optimization.

     

    My goal is to code something stable I will use myself to compose even more music in the future.

     

    And if there is any interest in using this experimental sounds format to compose musics, I'm sure talented programmers will figure out a way to make it easier to use.


     

    • Thanks 1
  7. Fixed an out-of-sync issue by simply make sure the duration counter in the init sound routine is reset to zero before trying to play any note.

     

    Version 0.3 Alpha (just the tiny sounds routines again) sndtiny.zip

     

    This version seems stable enough to try adapting part (about 5K data) of my compositions to tiny sounds format. I've selected the hardest one to adapt which is the elaborated Commando Chiptune music. There will be differences in the sounds quality of course but it should be close enough. And since I keep the bass and drum sounds data as is from the original composition, only the melody will be affected by this experiment. And, because of all these notes with arpeggio everywhere that were coded into multiple sounds swept codes for each note, tiny sounds format will make a big difference in size, like saving 20 or more bytes per 12 cycles duration notes. The size of the tiny sounds routines should be worth it right at the start of the Commando music.

     

    To be continued...

  8. Hello everyone!

     

    In 2018, I was working on a way to add music data as small as possible in my future projects without typing each note as a frequency and a volume effect. As a bonus, I've also considered to add vibrato and arpeggio support which sure increase the code size but do provide a richer sound experience.

     

    To achieve this, I've simply extended the CV BIOS sound format by using its sound type 4 which is just a call to a routine. The routine is reading differently the sound data as my proposed new tiny sound format which reduces to (almost) 1 byte each note. I've coded this routine based on my needs and the way I compose music. Some details are written in the "sndtiny.asm" source file, and you are invited to look and modify the data in "snddata.asm" to figure out by yourself how the notes are coded.

     

    The way I code music in my projects in based on CV BIOS sound format, the channels 0 and 3 are working together to play NOISE and BASS notes in a loop, these channels are not affected by this new format. The channels 1 and 2 are the melody channels and those do benefit from this new format by quite a lot for long music composition.

     

    I have trouble to make this new sound format work with my music_update routine, so I'm also considering to write a more stable music sequencer in the future.

     

    TINYMUSIC.thumb.PNG.4db383b16c9f24d9c2d9fba7adc5daea.PNG

     

    The source code is entirely in assembly code and uses keywords only used by tniasm assembly cross-compiler. But it can be easily adapted to be compiled by other cross-compilers.

     

    Version 0.1 Alpha TINYMUSIC.ZIP

    Version 0.5 Alpha (bugfix) sndtiny.zip

    • Like 6
    • Thanks 1
  9. Quick recap: I'm the author of many devkit tools including graphics, sounds, and data compression, and a couple of original homebrew titles like Jeepers Creepers and Ghost Blaster, and musics like Crazy Train, Jump, Poker Face, Commando, GhostBusters, Space Harrier, Toto, Safety Dance, and Duck Tales. This February 2019 was the 20th year of my first CV game from scratch titled Breakout; not a great game but simple and in french. I've started to make tools and rom hacks since 1996, so more than 20 years ago, my ColecoVision coding passion started.

     

    Dear Coleco friends,

     

    I've been again inactive for months in the ColecoVision scene, sorry about that.

     

    I love thinking about composing musics and ways to bring some projects back to life after years on ice. But for now, I've nothing in progress.

     

    The reason I'm writting this message, is to inform you that I'm alive, and I'm also going through a big change.

     

    It will be a shock for some who haven't seen my Facebook page in March this year before it got blocked. I can't deny who I am anymore; I'm doing a transition from Daniel to Amy. The name is changed legally, and I've psychiatric and medical support for almost a year now. I stay the same person, I'm just having some physical and emotional changes.

     

    I suppose my godfather title is no more valid, but feel free to keep using it.

     

    Thanks for your support and appreciation of my work through all these years!

     

    Best regards SmallWavingHappy.gif

    • Like 23
    • Thanks 1
  10. Does anyone know what happened to ADAMCON.ORG?

     

    I used to get lots of source material for programing and it went bye bye

     

    Dale Wick is the one dealing with the website ADAMCON.ORG

     

    Real life is very important and busy for him, so the website (server) is kinda not up and running and that's expected when you focus your energy on something else.

     

    Perhaps we can contact him by sending an email or even a personal message on Twitter.

  11. Well, if I am going to use up all 32k I want to give as much as I can.

     

    The maps I am producing for my first completed coleco game are so bland that all of this could be done in video mode 1.

    I personally have a sense that it would be lazy to render such bland graphics using 32k when there are games like Pitfall 1 and 2 that have so much in them.

     

    Also by developing this system of mapping it will be future proof for my second project.

     

    I will also hint that what I am doing are ports that have never been done on a Colecovsion and I hope you guys will be presently surprised.

     

    Already into memory space optimization? and planning ahead to reuse that strategy for a second project? You already impress me!

     

    We all reach a point in our projects that either force us to simplify some parts (cut a music, a cutscene, some graphics, a level, etc.), to find clever ways to optimize the available space (data compression), or to consider bank-switching (one of the hardware solutions to everything). In the 80s, to minimize the production cost, games were released quickly (don't wanna pay workers for too long) and had to fit into 8K, 16K or at most 24K, which forced to cut parts of the games and use basic clever data compression like a mirror effect, a color swap, and a run-length encoding. The ColecoVision BIOS was made in a way to help reducing codes needed in the game cartridges; it has many clever routines available and some still to be explored by homebrewers, but no data compression routine... or is it? No there isn't any data compression routine in the BIOS, but there are graphics tricks including a rotation or mirror effect, and a few other things. With time, I needed better and better data compression, I wanted to push the limits, and I've developed my own tools. Quite frankly, I may have hurt my head too much, but it was worth it - very satisfying when things just work!

     

    Good continuation!

  12. The first CCI was in a weird programming language no more supported. After that, my devkit changed to stop using commercial product Hi-Tech C cross-compiler and I've used Java as a programming language for the 3rd version of CCI because it's a programming language possible for many platforms and used with success for decades already.

     

    CCI is basically just a user-friendly way to avoid typing command-lines by creating ".BAT" files according to what you click to compile and link. I suggest that you make your own batch files based on the SDCC documentation which can do more than what CCI allows you to do.

     

    Really, CCI is just a time and headache saving for me to compile my ColecoVision projects and I shared that tool as is. Sorry, it's not in a language you like.

     

    Ideally, there should be a way to make an IDE support SDCC compiler and color-code Z80 opcodes to compile ColecoVision projects, but I don't know any, and I don't know if any can be used with my good old devkit libraries.

     

    Good luck!

     

    Is it possible to have a version that does NOT use Java?

    Some people just view Java as a waste of time and valuable resources when there is 100% no need for it to have any life in windows.

    So many tools out there and people for some reason want to add another layer to an already working system>

    I had the same argument about the Magic User Interface for the Amiga.
    What ended up happening is everyone started using that instead of developing native programs so you have to use that extra layer in order to go online.

  13. Your assembly Hello tutorials work great, Dev kit is no longer on your site plus everything is out dated relying on old operating system.

     

    I can find no link to contact you on your website or youtube channel so I will post it here.

     

    It would be the greatest thing if you posted your notes, tutorials or what not for a complete Coleco Programing guide.

     

    I would love to create a game but nothing for coleco has been modernized and despite the other gentleman updating the library the dev kit is still 10 years old.

     

    It's never perfect, but my devkit includes multiple code samples, projects I've made in the past, which I hope can be compiled with a newer version of SDCC (I don't know for sure). You can find documentation online, but I've hardly any free time to work on tutorials and documentation anymore.

     

    Good luck!

     

    A link to my devkit, January 2018 version: https://drive.google.com/open?id=1ACw34Ch5VI59irnxxgyMlF_Az2UBYDYO

  14. 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.free.fr/serendipity/index.php?/archives/522-ColecoVision-63-in-1-Flash-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!

  15. Perhaps this list I've compiled in 2010 from the official Coleco Industries CV programming documents will give you and new CV homebrewers an idea of what is hidden in the ColecoVision BIOS. Please note that it is not necessary to use any of this to make a CV game working properly, but it is quite powerful and useful routines that can save us time coding and space in game cartridges.

    ColecoVision BIOS is also refered as OS 7prime, also refered simply as OS7.
    * because it was the 7th revision of the BIOS when the console was released
    
    OS 7prime BIOS Jump table
    Note: P (at the end): special entry points for Pascal programs.
    
    1F61 > 0300 : PLAY_SONGS
    1F64 > 0488 : ACTIVATEP
    1F67 > 06C7 : PUTOBJP
    1F6A > 1D5A : REFLECT_VERTICAL
    1F6D > 1D60 : REFLECT_HORIZONTAL
    1F70 > 1D66 : ROTATE_90
    1F73 > 1D6C : ENLARGE
    1F76 > 114A : CONTROLLER_SCAN
    1F79 > 118B : DECODER
    1F7C > 1979 : GAME_OPT
    1F7F > 1927 : LOAD_ASCII
    1F82 > 18D4 : FILL_VRAM
    1F85 > 18E9 : MODE_1
    1F88 > 116A : UPDATE_SPINNER
    1F8B > 1B0E : INIT_TABLEP
    1F8E > 1B8C : GET_VRAMP
    1F91 > 1C10 : PUT_VRAMP
    1F94 > 1C5A : INIT_SPR_ORDERP
    1F97 > 1C76 : WR_SPR_NM_TBLP
    1F9A > 0F9A : INIT_TIMERP
    1F9D > 0FB8 : FREE_SIGNALP
    1FA0 > 1044 : REQUEST_SIGNALP
    1FA3 > 10BF : TEST_SIGNALP
    1FA6 > 1CBC : WRITE_REGISTERP
    1FA9 > 1CED : WRITE_VRAMP
    1FAC > 1D2A : READ_VRAMP
    1FAF > 0655 : INIT_WRITERP
    1FB2 > 0203 : SOUND_INITP
    1FB5 > 0251 : PLAY_ITP
    1FB8 > 1B08 : INIT_TABLE
    1FBB > 1BA3 : GET_VRAM
    1FBE > 1C27 : PUT_VRAM
    1FC1 > 1C66 : INIT_SPR_ORDER
    1FC4 > 1C82 : WR_SPR_NM_TBL
    1FC7 > 0FAA : INIT_TIMER
    1FCA > 0FC4 : FREE_SIGNAL
    1FCD > 1053 : REQUEST_SIGNAL
    1FD0 > 10CB : TEST_SIGNAL
    1FD3 > 0F37 : TIME_MGR
    1FD6 > 023B : TURN_OFF_SOUND
    1FD9 > 1CCA : WRITE_REGISTER
    1FDC > 1D57 : READ_REGISTER
    1FDF > 1D01 : WRITE_VRAM
    1FE2 > 1D3E : READ_VRAM
    1FE5 > 0664 : INIT_WRITER
    1FE8 > 0679 : WRITER
    1FEB > 11C1 : POLLER
    1FEE > 0213 : SOUND_INIT
    1FF1 > 025E : PLAY_IT
    1FF4 > 027F : SOUND_MAN
    1FF7 > 04A3 : ACTIVATE
    1FFA > 06D8 : PUTOBJ
    1FFD > 003B : RAND_GEN
    
    OS 7prime BIOS Symbols
    
    0069 AMERICA 60 = NTSC, 50 = PAL
    006A ASCII_TABLE Pointer to uppercase ASCII pattern
    006C NUMBER_TABLE Pointer to numbers 0-9 pattern
    00FC FREQ_SWEEP Frequency sweep
    012F ATN_SWEEP Attenuation sweep
    0190 DECLSN Decrement low nibble (in UTILITY)
    019B DECMSN Decrement high nibble (in (UTILITY)
    01A6 MSNTOLSN Copy high nibble to low nibble (in UTILITY)
    01B1 ADD816 Add signed 8bit value A to 16bit [HL]
    01D5 LEAVE_EFFECT Called by a special sound effect function when done
    02EE EFXOVER (in PROCESS_DATA_AREA to get next note)
    07E8 PX_TO_PTRN_POS Pixel to pattern plane position
    080B PUT_FRAME Copy a block of names to VRAM
    0898 GET_BKGRND Copy a block of names from VRAM to RAM
    08C0 CALC_OFFSET Returns DE := offset for the coordinates (E,D)
    1D43 CTRL_PORT_PTR (in READ_VRAM, equal I/O port# BF)
    1D47 DATA_PORT_PTR (in READ_VRAM, equal I/O port# BE)
    1D6C ENLRG It is the local name of the ENLARGE routine
    
    
    OS 7prime External symbols
    
    in RAM (7000-73FF)
    73B9 STACK Stack pointer address
    73C3 VDP_MODE_WORD Copy of the first two VDP registers
    73C5 VDP_STATUS_BYTE Contents of default NMI handler
    73C6 DEFER_WRITES Boolean flag to defer writes to VRAM
    73C7 MUS_SPRITES Boolean flag to sprite multiplexing
    73C9 RAND_NUM Pointer to pseudo random number value
    
    in ROM (game cartridge header)
    8000 CARTRIDGE Cartridge starting address
    8002 LOCAL_SPR_TABLE Pointer to sprite name table
    8004 SPRITE_ORDER Pointer to sprite order table
    8006 WORK_BUFFER Pointer to temporary storage in RAM
    8008 CONTROLLER_MAP Pointer to controller memory map
    800A START_GAME Pointer to game start code
    800C RST_8H_RAM Reset 8 soft vector
    800F RST_10H_RAM Reset 10 soft vector
    8012 RST_18H_RAM Reset 18 soft vector
    8015 RST_20H_RAM Reset 20 soft vector
    8018 RST_28H_RAM Reset 28 soft vector
    801B RST_30H_RAM Reset 30 soft vector
    801E IRQ_INT_VECT Software interrupt vector (RST 38H)
    8021 NMI_INT_VECT NMI soft vector
    8024 GAME_NAME String of ASCII characters
    
    
    • Like 3
  16. Uh oh. I lost my local copy of the tool, and the link at http://eriscreations.com/downloads/CVSoundFX.zipappears to now 404. Where else can I get a .zip?

     

     

    Thanks.

     

     

     

    During the past 8 years, I'm having bad luck with technology; I lost 3 computers and various HDD including the one containing a copy of my blog. This issue erased part of my 20 years of coding.

     

    Anyway, here's the missing download file, but not sure which version it is.

     

    EXE + SRC

    CVSoundFX.zip

    • Like 3
  17. Once upon a time, more than a decade ago, a collection of sounds and music of various ColecoVision released games was put together with the best sound chip simulator of the time I've coded in Java, better than any emulator back then.

     

    https://wayback.archive.org/web/20090831111436/http://www.geocities.com:80/newcoleco/soundbank/os7_en.html

     

    Here's an archive of that web page with files.

    Download: soundbank.zip

     

    Unzip everything in a single folder, unzip the soundbanks, but do not unzip the .gz files. Then execute either the CVBANK.JAR or the CVBANK.EXE file.

     

    post-3651-0-81780300-1529360458.jpg

    post-3651-0-35297000-1529360580.jpgpost-3651-0-12616500-1529360596.jpg

     

    Enjoy!

    • Like 1
×
×
  • Create New...