Jump to content

newcoleco

Members
  • Posts

    1,353
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by newcoleco

  1. GitHub source: https://amypurple.github.io/cvsoundjs/ CV Sound OS7 (amypurple.github.io)
  2. 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
  3. This is a patched CCI3 source code with its compiled version to replace the one in the devkit. It somewhat bypass the "coleco.h no such file or directory" issue I'm having right now that I've never seen before. cci.zip
  4. Sorry. My mailbox here was always a problem. I will try to free space and contact you.
  5. 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.
  6. I didn't see your PM. have you tried on Facebook or here?
  7. 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.
  8. 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
  9. 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.
  10. 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...
  11. Tested and... I've spotted some issues in version 0.1 Alpha including an incorrect "6 bits code to 12 bits period" conversion, and also other bugs I'm not sure how to fix at the moment. Will work on it again another day. Version 0.2 Alpha (just the tiny sounds routines file) : sndtiny.zip
  12. 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. 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
  13. I've modified my "About me" here, just to be up-to-date, adding a few things about the drama with the brand holder and the big change in my life that I'm glad many responded with positivity. Thank you everyone for your support through all these years.

    1. Show previous comments  1 more
    2. newcoleco

      newcoleco

      Indeed, it seems I need to setup a new page somewhere. Thanks for telling me.

    3. Mike Harris

      Mike Harris

      Looking at your picture here and your Twitter I can only assume that you made a BIG change.

      As long as you are you then you get a thumbs up from me.
       

    4. newcoleco

      newcoleco

      Big change, indeed. I've admitted openly my identity disorder only last year, and started my coming-out this year. I'm talented and intelligent but it is a lie to think that we can handle by ourselves a mental disorder. Each crisis went stronger and stronger through time to the point of feeling like crap and powerless. But, with the proper help from a psychiatrist, life counselors, and health professionals, I'm going through HRT and living as my trueself. See, it's not a choice, it's living finally. After dealing with many depressions, worries, and fears of unknown consequences, I'm feeling way better now, smiling every day, with better sleep, and a zen mind. No more hiding, no more hurting myself, I'm out and free to be me.

  14. 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
  15. Sorry to vanish for months. Personal reasons that I will explain in another post. I hope you managed to figure out how to do your codes.
  16. 2018 is over, let's see what are the votes for the new song to compose. *Note: the huge numbers are the number of results on Google search. 1982 ------- Michael Jackson - Beat It : 125 000 000 The Clash - Should I Stay or Should I Go : 84 300 000 Culture Club - Do You Really Want To Hurt Me : 37 400 000 Imagination - Just An Illusion : 32 300 000 Michael Jackson - Billie Jean : 28 300 000 Men Without Hats - Safety Dance : 25 600 000 + 2 votes Toto - Africa : 25 000 000 + 3 votes Michael Jackson - Billie Jean : 20 800 000 Survivor - Eye of the Tiger : 16 900 000 + 3 votes Billy Idol - White Wedding : 16 800 000 Willie Nelson - Always On My Mind : 10 800 000 + 2 votes Eddy Grant - Electric Avenue : 7 380 000 Laura Branigan - Gloria : 3 700 000 + 2 votes Duran Duran - Hungry Like The Wolf : 1 170 000 + 1 vote Marvin Gaye - Sexual Healing : 1 060 000 Hall & Oates - Maneater : 352 000 + 2 votes Dexys Midnight Runners - Come on Eileen : 166 000 + 1 vote not 1982 ------------ A-Ha - Take On Me (1985) : 1 060 000 000 + 1 mention Men at Work - It is a mistake (1983) : 190 000 000 Dire Straits - Money for Nothing (1985) : 11 300 000 + 1 mention Kool & The Gang - Get Down On It (1981) : 8 250 000 Olivia Newton - Physical (1981) : 8 010 000 Foreigner - Waiting For A Girl Like You (1981) : 7 990 000 + 1 vote Motley Crue - Girls Girls Girls (1987) : 4 090 000 Earth, Wind & Fire - Let is Groove (1981) : 4 000 000 Journey - Do not Stop Believin (1981) : 1 930 000 + 3 votes Toni Basil - Mickey (1981) : 1 610 000 + 1 vote Rod Stewart - Young Turks (1981) : 1 260 000 + 2 votes Devo - Whip It (1980) : 903 000 + 1 mention JoanJett & The Blackhearts - I Love Rock and Roll (1981) : 637 000 + 1 vote Motley Crue - Looks That Kill (1983) : 556 000 J. Geils Band - Centerfold (1981) : 496 000 + 2 votes Vangelis - Chariots Of Fire (1981) : 486 000 + 3 votes The Fixx - One Thing Leads To Another (1983) : 142 000 So, for the Hits of 1982, Google is suggesting Michael Jackson - Beat It, and the AtariAge forums users are suggesting Survivor - Eye of the Tiger. Both have their challenges and distinctive sounds, I really like these choices. We will see which music I end up composing first between the two... unless I've already done it but I don't remember.
  17. 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.
  18. 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!
  19. 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!
  20. 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
  21. 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!
  22. 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
  23. 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
×
×
  • Create New...