A bit more work to use the usual "play each sample twice to heighten the volume and drown the carrier", Glider for Apple II sounds good now, I think?
Commit: https://github.com/colinleroy/a2tools/commit/82b659311486d843f96ab27971b3f0cd49840821
A bit more work to use the usual "play each sample twice to heighten the volume and drown the carrier", Glider for Apple II sounds good now, I think?
Commit: https://github.com/colinleroy/a2tools/commit/82b659311486d843f96ab27971b3f0cd49840821
Of course, with the cursed Apple II colour implementation, it looks like shit on a colour screen.
But to me, the Apple II experience is better with a monochrome screen, and I'm OK with that.
More info about The Curse: https://paleotronic.com/2018/10/03/apple-ii-colour-computer-graphics/
I think it's time to work a bit on the level design. I find it hard to make things look neat on 280x192 pixels, but I'm quite happy with the result of this one hour session?
I can barely move 3 sprites of that size in between two mouse interrupts, that's gonna have to be a simple game if I want it to work at 60hz 😄
Mmmmh, I have time to easily draw four sprites if I draw half of them on one mouse interrupt and the two others on the next one, that's cool.
Previous sprite was hand-generated from a LibreOffice Calc spreadsheet, copy-pasted to assembler sources. This was VERY painful. Those who know HGR know.
New sprite is generated by C code that take a PNG in and dump relevant .s and .inc files. It is much more satisfying.
Am I going to try and make a #Glider clone? Maybe.
Will I manage collision detection?
I don't know.
#Retrocomputing #Apple2
Sprite generator input / output.
The plane.s file contains 8 sprites for the same plane, as a pixel is a bit and not a byte on the Apple II : storing 8 sprites shifted by one pixel (bit), and selecting the correct one at runtime, is MUCH faster than letting the 6502 shift data.
Vents are implemented (https://github.com/colinleroy/a2tools/commit/14173b3ecd8e6601adb6dec2f6de72a2676bb7e9)
Collision detection is in place! (https://github.com/colinleroy/a2tools/commit/e11338289ef54cec3853c92ad818cc149c3129d5)
Enough #RetroComputing for the day!
(sound on)
Obviously there were bugs in the sprite generator, (in the smoothing of the X coordinate via multiple sprites), fixed that before going to bed. (https://github.com/colinleroy/a2tools/commit/77bdc26b5b64965ac8afc487a7beabf68815b08d)
#RetroComputing #Apple2
I fixed one more bug - I divided and "moduloed" my pixels by 8 to blit my sprite at the correct HGR bytes, but I had forgotten that 1 byte = 7 pixels, not 8.
That explains why my plane refused to go to the right border of the screen.
My plane's movement and the collision detection is now pixel-perfect.
(https://github.com/colinleroy/a2tools/commit/ad2263b8b7bfc3c1f9247ac3cc10d1b30e6a5f09)
I managed to generalize my sprite drawing code, implemented another sprite, and can now put an arbitrary number of sprites on the screen! (but 8 max in reality otherwise it's too slow).
When the plane and the moving clock collide, the background save/restore fails because the second sprite drawing saves the "background" on which the first sprite is already drawn.
That's not a real issue because once it'll be implemented, sprite collision will either trigger the plane's crash or a bonus (and the bonus sprite will disappear).
Big commit: https://github.com/colinleroy/a2tools/commit/ba551f6422d406e31fc3a37a56bab2613c5b685b
I'm quite happy with how I will define the levels. All kind of data (vents boxes, hitboxes for obstacles, and sprites): are defined in one file.
https://github.com/colinleroy/a2tools/blob/master/src/glider/level0.s
Later these definitions will be augmented with the game logic, probably via callback functions in the sprites definitions.
The sprites' hitboxes are now checked!
This will allow to either die (if the sprite is a malus) or get a bonus. For now they're all killers.
Commit: https://github.com/colinleroy/a2tools/commit/ffad67d7f91fb8be6ada52fd5926c686271bd703
Correct level reset.
An invisible commit. Whereas the moving clock was previously moved in the main game loop, I have now set up a specific callback so that each level gets its own level logic function.
That will allow me to have specific movements, triggers etc for each level.
https://github.com/colinleroy/a2tools/commit/67c52b79d4f09704ca8cf14867bc2848284f55b4
I would very much like to implement "level win, go to next level" now, but instead I'm babysitting the 3D printer shitting itself.
Level win & next level, done! I'm really happy how simple it turns out to add a level. The main difficulty is the art.
Commit: https://github.com/colinleroy/a2tools/commit/371acfdbbe3957c6c3cd919f3c34b2c47dc40f84
Cycliste, écologiste, gauchiste, et d'autres mots en iste. Sur mon temps libre, je fais des trucs comme du logiciel libre, des meubles, du #RetroComputing.Des fois je poste avec mon Apple //c.
GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.
All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.