Jump to content
  • entries
    657
  • comments
    2,692
  • views
    898,623

About this blog

Atari projects, Mac mini DVR, and other things

Entries in this blog

pixel perfect collision detection

The routines now report a collision only when sprite pixels overlap.   I've modified the joystick routines to use the right joystick to move Evil Otto. When he's moved the score will turn green to denote that his collisions are the ones being displayed.     Not touching (technically this should be touching - but the revolving eye is not stored as part of the sprite image).   Touching   Evil Otto collides with humanoid   Evi

SpiceWare

SpiceWare in Frantic

bounding box collision detection

I'm not able to use the TIA's hardware collision to detect sprite collisions as it's possible, due to flicker, that 2 colliding objects are never drawn on the same frame. As such, I've started working on a software collision detection routine.   Collisions are only tested for a sprite that is moved (saves a lot of time as most sprites are stationary on each frame).   The quickest thing to determine is if the rectangles containing the spites overlap - that's called Bounding Bo

SpiceWare

SpiceWare in Frantic

Kernel rewrite finished

The reposition routines have now been rewritten to support updating the missiles. The 2 missiles are flickered at 30 Hz to provide a maximum of 4 shots in flight.   I've also added test routines to move the 4 shots around the screen. 1 shot will be used for the humanoid, up to 3 for the robots. The shots can be displayed in 1 of 3 shapes: horizontal, vertical and small square. The small square will be used for a new robot-smart-missile feature I'm planning to add to compensate for fewe

SpiceWare

SpiceWare in Frantic

ARM help needed

The "new" Linux ARM compiler produces the same results as the OS X compiler that batari built. So either the OS X compiler was built with the current source, or the changes made are not relevant to Frantic's source.   In the source are 2 directories for the custom C routines: In custom, the function ShiftRoom() directly precedes DataStream0(). In custom crash, the function ShiftRoom() directly follows DataStream0(). The functions themselves have not changed, only th

SpiceWare

SpiceWare in Frantic

Launch Missiles

Just finished getting the main kernel loop revamped to support updating the missiles. To make it work I unrolled the datastreams for both left and right PF0. PF0 only uses the upper half of the byte, while the missile enable only uses one of the bits in the lower half, so I combined the data(left PF0 with Missile 0 and right PF0 with Missile 1). Due to timing issues, I load those datastreams into the X and Y registers as that gives me more flexible for timing the writes (the PF0 writes have diff

SpiceWare

SpiceWare in Frantic

1-2 weeks before the next Frantic update

My folks are coming in from Trinidad this weekend. Their household is all packed up and ready to be shipped to Africa. They'll be leaving from Houston for dad's new job in Africa sometime next week.   My next step for Frantic is to update the kernel to turn on/off the missiles for the shots. My plan is to flicker the two missiles to provide 1 humanoid shot and up to 3 robot shots. If I can also get the ball to update then I'll do 2 human shots and up to 4 robot shots.   An al

SpiceWare

SpiceWare in Frantic

Initial speech in Frantic

Initial integration of the digitized sample playback routines. It sounds a bit rough at the moment as not all of the AUDV0 updates are in place.   Note: the speech can only be heard using a Harmony cartridge. I'll release a beta build of Stella later this week with support for the new DPC+DA driver.   ROM f20110626_NTSC.bin   Source Frantic20110626.zip

SpiceWare

SpiceWare in Frantic

Flickerama

Think I figured out the cause of the glitch.   I use 4 datastreams to draw all the players(sprites in 2600 terminology) on the screen. Each player gets 2 datastreams, one for the image and one for the color. A 0 value in the color datastream is used to trigger a reposition of a player. The color datastreams are pre filled with 15 (white) so that missiles will be visible on scanlines without the corresponding player present.   When a reposition is triggered, 2 bytes in the ima

SpiceWare

SpiceWare in Frantic

Flickerific

Preliminary flicker routines. They do mess up every once in a while, so no need to report that - just wanted to get an "offsite backup" posted in case I make things worse trying to figure out the source of the occasional glitch   Use left joystick to change rooms, robots will rearrange for each room. Use difficulty switches to control room display.         ROM f20110617_NTSC.bin   Source Frantic20110617.zip

SpiceWare

SpiceWare in Frantic

Harmony tests please

For those with a Harmony, can you test this build and let me know if it works OK? digitalaudio_harmony_20110614.bin   I've been experiencing crashes on my light sixer and 7800. On both it sometimes crashes right away, and other times it can complete a few words or even a few phrases before crashing. Eventually, "once it warms up", it stops crashing.   Batari's not able to find anything wrong with the new DPC+DA code, plus it runs OK on his system, so we're thinking it mi

SpiceWare

SpiceWare in Frantic

X Test

Test of X values from 0-159. Use the RIGHT Joystick to move 2 of the robots. If you push upward the left/right movement is slowed down to facilitate testing. (2nd joystick keys for Stella are: Y = UP, G = LEFT and J = RIGHT).   The Room # is now the first 4 positions of the score. The robot's X value is the last 2 positions of the score. In the topmost strip of the room I've turned on all 8 pixels for the sprites. These are positioned using the traditional position object routine so th

SpiceWare

SpiceWare in Frantic

Repositioning for P1

hardcoded sprites for testing the repositioning routines for Player 1. Also did some color tests for the robots     ROM f20110611_NTSC.bin   Source Frantic20110611.zip

SpiceWare

SpiceWare in Frantic

For those without a Harmony

Not sure how clearly this comes across via YouTube as I'm so used to hearing & understanding the phrases (even down to 2000 Hz) from all the testing I've done. The demo is at 4000 Hz and the phrases are: "The Humanoid Must Not Escape" "Intruder Alert, Intruder Alert" "Chicken, Fight like a Robot" "The Chicken Must Not Escape"   Followed by the Intruder Alert message played back at a variety of rates.   http://www.youtube.com/watch?v=NEDP0Ch0j8M  

SpiceWare

SpiceWare in Frantic

packed data test

With the packed data, I'm pretty sure I'll be able to make the simple phrases fit into the game. It also increases the odds of fitting in some additional words.   Instead of overlapping 2 samples together, I just packed each sample's data by itself. This means I only need 1 function to expand the data instead of 2. The utility raw_to_dpc was modified to pack the data when it converts the 8 bit samples to 4 bit.   Anyway, back to kernel development.   alex_packed_sim

SpiceWare

SpiceWare in Frantic

Voice test wrap up

Did the robotic 7-8 treatment on the voices that work at 4000. They all have the distortion that I don't care for.   Based on the experiments done so far, I'm hoping I'll be able to use Alex4000_simple4 from the prior blog entry, but until the game code has been written I won't know how much space I'll have to use for audio samples. I will decrease the quality (or even eliminate the samples) if needed, though there's also the change that there will be extra space allowing me to add an

SpiceWare

SpiceWare in Frantic

more voice tests

An empty buffer is filled with an 8 for the waveform data as using 0 causes a noticeable click between words. The Display Data after the sample buffer is filled with 0, so if the program went past the end of the buffer the waveform on the screen wouldn't show anything. On the chance that just the ARM code stopped working and the 6507 was using data from after the sample buffer, I added a bit to the 6507 code to toggle the background color based on the right difficulty switch. However, the proble

SpiceWare

SpiceWare in Frantic

Alex tests

Just for grins, did some builds using the Alex voice at 3 different rates: 2000, 3000 and 4000 Hz. Sample space used for the 12 words:   2000 Hz = 7575 bytes 3000 Hz = 11365 bytes 4000 Hz = 15153 bytes   Edit: added Berzerk samples at 2000 and 3000 Hz 2000 Hz = 8743 bytes 3000 Hz = 13117 bytes   Edit 2: added Victoria samples at 2000, 3000 and 4000 Hz. 2000 Hz = 7537 bytes 3000 Hz = 11304 bytes 4000 Hz = 15072 bytes  

SpiceWare

SpiceWare in Frantic

multiple phrases

In the prior example the entire phrase was put into the Display Buffer. For this test, I've revised the routines to use a 1K sample buffer. The buffer is filled in with $F8, then the word to be played back is copied into the buffer. The 6507 routines monitor for volume >= $80 which tells it to request the ARM routines to fill in the next word.   Not all of the voice tests were compatible with the 1K buffer. Some of them, such as the Berzerk samples, ended up having a word (humanoid

SpiceWare

SpiceWare in Frantic

the humanoid must not escape

I found SoX and used it for the frequency conversion w/low pass filtering.   I created a bunch of test ROMs that utilize the original MAME Berzerk samples as well as the various built in voices on the Mac. To create the samples for the Mac voices I used the Speech System Preference panel, selected each voice and ran the script create.sh (in the samples folder of the attached source code), which creates audio files for each word.   I then ran convert.sh, which runs sox to conv

SpiceWare

SpiceWare in Frantic

humanoid

I did some testing for sample playback. I used 2 different samples for the word "humanoid", one from the Berzerk samples used in older versions of MAME, the other uses the Mac's built in speech synthesis with the Zarvox voice (with speaking rate set half way between Normal and Fast). I chose the humanoid sample as it was the longest in duration of the Bezerk samples.   The Berzerk sample seems a bit noisy which is why I decided to try the Mac's built in Zarvox voice. Also I would like

SpiceWare

SpiceWare in Frantic

Repositioning for P0

hardcoded sprites for testing the repositioning routines for Player 0. There's 2 DataStreams, 1 for the color and another for shape. The color stream is always read first. It will contain a 0 whenever Player 0 needs to be repositioned (1 is used for black). The reposition prep is contained in the next 2 Graphic Datastream bytes and the next Color Datasteam byte, so a reposition takes 2 scan lines.   At the moment I'm using Early HMOVE so there's no black bars on the left edge of the sc

SpiceWare

SpiceWare in Frantic

Minor update

My sister's taking a little longer than to expected to get here, so I put in the new title graphics while I've been waiting. The graphics didn't work as is though, I had to shift the letters FRANT to the left by 1 pixel due to PF alignment of the 2nd color. The colors I'm using are: FranticLogoColor: .byte 0, HAIR ; 0 .byte 0, FACE ; 1 .byte WHITE-4, FACE ; 2 .byte RED+6, RED+4 ; 3 .byte WHITE-6, WHITE ; 4 .byte WHITE-2, WHITE ; 5 .byte WHITE-2, WHITE-6 ; 6 .byte WHITE-4, WHITE

SpiceWare

SpiceWare in Frantic

no update until next week

RL events mean the next update won't be until next week.   I'd been planning to use similiar robots & humanoid images as those found in Berzerk and Frenzy, but espire8 sent me some multi-color sprite samples that have me reconsidering:   One thing I was planning to do was to HMOVE the Missiles and Ball on every line so I could draw them diagonally for diagonal shots. I haven't looked at timing yet, but multicolored sprites and digital sample playback probably

SpiceWare

SpiceWare in Frantic

Line Drawing in place

I changed all the wall and door routines to use the new DrawLine function. I also updated the Frenzy routines to do the full maze instead of just 1 1/2 columns. At that point the ARM code had shrunk from 3180 to 2508 bytes. Nice savings and cleaner code.   I then added difficulty switch settings that will eventually be replaced by menu options:   Left Difficulty Flicker Reflective walls Animate Reflective walls Right Difficulty Frenzy maze la

SpiceWare

SpiceWare in Frantic

Test of new walls

Partial test of the new wall routines for the Frenzy gameplay variation. The Frenzy maze starts with 15 posts in the middle of the room instead of 8, and the walls can either be shot-out brick-by-brick, or they can reflect the shots flying around the screen. I'll eventually have a menu option where you select which variation to play, at the moment it's hard coded for Frenzy.   While working on the 2nd column, I decided I needed to revamp how I am drawing the walls - so this is what was

SpiceWare

SpiceWare in Frantic

×
×
  • Create New...