6 Likes
New Game - Pietro Bros [z88dk/Nirvana+]
PIETRO BROS
Pietro and Luizo were transported to pipe world after eating some rancid mushrooms on his pizza.
Help them to escape from this hell...
Download
Based on Mario Bros from the NES.
One or Two player Game
32 Levels of Fun.
Three modes of Play.
Nirvana+ Multicolour.
48 Sounds.
AY Music and Effects
Sinclair Joystick Only.
Spectrum 128kb Only.
More than a year of work.
This games was build on z88dk and using Nirvana+ for the multicolour graphic engine.
I really like to thanks Alvin Albrecht for his help, most of the magic come from his fingers. Also Einar Saukas for his marvelous Nirvana Library!
This is my christmas gift to all the Spectrum lovers!
Merry Christmas, Cheers!
2016 Cristian M. Gonzalez
Version 1.0
Pietro and Luizo were transported to pipe world after eating some rancid mushrooms on his pizza.
Help them to escape from this hell...
Download
Based on Mario Bros from the NES.
One or Two player Game
32 Levels of Fun.
Three modes of Play.
Nirvana+ Multicolour.
48 Sounds.
AY Music and Effects
Sinclair Joystick Only.
Spectrum 128kb Only.
More than a year of work.
This games was build on z88dk and using Nirvana+ for the multicolour graphic engine.
I really like to thanks Alvin Albrecht for his help, most of the magic come from his fingers. Also Einar Saukas for his marvelous Nirvana Library!
This is my christmas gift to all the Spectrum lovers!
Merry Christmas, Cheers!
2016 Cristian M. Gonzalez
Version 1.0
Comments
https://sinclairql.wordpress.com
(A very colourful platform game for Christmas. Great work.)
#GoogleTranslate
Merry Christmas,
Derek.
I noticed some occasional screen flicker - under emulation, didn't test it under real hardware yet - but nothing really serious. I am going to make a Turbo version of it soon ;)
Gracias y feliz Navidad a todos! :D
Not all emulators correctly support multicolor. Some need correct setting in config.
On Android only spectacol and spectaculator can accurately emulate multicolor effects.
Sure! On PAL machines only, I haven't have the chance of checking it, as all my hardware is NTSC. So if someone is willing to record a video I will really appreciate it.
There is an existing official Mario Bros on Zx Spectrum but it's total crap. Your game beats it totally.
If you did it 1983 people would go crazy and you would be rich :)
The are some problems with synchronisation, flicker etc. but nothing serious enough to take the pleasure from the player.
T H A N K S !
https://www.facebook.com/groups/1694367894143130/
Download - Pentagon
I'm not sure if the pokes will also work on this version because the compiler is a bit non-deterministic.
And thank you for the credit Cristian but it is overestimated :) The game is Cristian's work - my contribution is only on the periphery in the tools and ay effects.
There is also a zx7-compressed build that is half size and will load in half time. I'm not sure if Cristain wants to go with that since the plain taps are easier to port to real machines or disk systems.
Write games in C using Z88DK and SP1
Some emulators reproduce real machines perfectly. Other emulators are just simplified versions, good enough for most games, but not good enough for more sophisticated features like multicolor.
Yes, it works on all real Spectrum official models (48K, 128K, +2, +2A, +2B, +3).
I created a build for you, ver 1.1 (just small fix on clearing pipes when an sprite dies)
https://drive.google.com/file/d/0Bw3Nat5zkP-Hc3pCSzc4YzdVdEU/view?usp=sharing
zx7 is great, we have it on the build script but takes a lot of time as it have compile the code twice.
My plan is to release the sources on GitHub after some tweaking, to allow another speccy developers to use as a base for future speccy games. Also I like start working on the next year on "Pietro Kong". I think it won't be so difficult by using pietro source as base.
So any help will be appreciated.
Regards
http://zx-pk.ru/
I didn't think it was that bad :P
The flickering is coming because the draws are occasionally taking too much time so that an interrupt occurs while the interrupts are disabled. If the ints are disabled, the nirvana engine misses a frame and regular attributes are shown for that one frame.
I've also noticed there may be more flicker on some models, or at least I noticed there seems to be more flicker on the Pentagon. The Pentagon has a longer frame (I think) so this is a bit surprising and may indicate that there should be a nirvana_halt inserted someplace to sync up. Inserting a conservative nirvana_halt at a strategic location may also eliminate the flicker entirely at the expense of the game being one frame slower. Maybe that's something to have a look at.
There has been code improvement done on the compiler in conjunction with this project (making the code faster) but the latest changes haven't had much impact on the flicker frequency.
It may be a bit harder to wedge a custom loader in there but maybe some info will help.
The first 32 bytes is the mini-loader loaded into the screen:
which you probably don't have to change.
Next the main loader is loaded to 23296 just after the display file. There is only 256 bytes available here, including the stack (the stack is moved to the top of this 256 byte page).
The zx7 compressed loader only leaves about 30 bytes for the stack while loading. There are about 800-900 bytes available just before the nirvana engine at 56323 but that is space for the program to grow. There are also about 150 bytes at the top of memory available. The last byte segment is AY music and effects which are loaded into another memory bank (and would hide that high memory while loading).
Write games in C using Z88DK and SP1
Regular loader (not zx7 compressed), occupies 116 bytes out of 256 available (stack is in there too) at 23296
zx7-compressed loader occupies 226 bytes out of 256 available (stack is in there too) at 23296
In the zx7 version the l_ret subroutine has to be at that position because it will be called by the game code.
If you stick to it good luck :)
Write games in C using Z88DK and SP1
The first is monochrome, but very well executed, almost like Super Mario Land on GameBoy.
The second is also quite good.
Does anyone know if there's a full versions of these two games?
http://zx-pk.ru/
The best way to avoid this problem is, never draw anything yourself in NIRVANA. Use sprites instead, thus everything will be automatically drawn for you. Sprites don't interfere with interrupts and they don't take any CPU time from your code.
NIRVANA gives you 8 sprites. If you reuse them for a different purpose every frame, you will be able to draw 50*8=400 multicolor tiles per second.
Also method "fill" (to erase previous sprite positions when moving them) can be done with sprites using an empty tile. In this case, it's still possible to move (erase and redraw) 200 multicolor tiles per second at no cost. Or constantly move 4 tiles at 50tps, or 8 tiles at 25tps, or 16 tiles at 12.5tps, etc. That's good enough for most games...
EDIT: In particular, SNAKE ESCAPE uses sprites instead of draw/fill for everything, except for drawing the screen at the beginning of each level when interrupts are disabled.
EDIT2: The NIRVANA+ demo is a good example on how to quickly move tiles on screen using sprites.
I will try to Branch and replace the paints routines with sprites, to see if we can fix it.
On another subject, I cannot edit posts, can someone tell me how to edit a post?
I want to edit the first post and add the new version and changelog, wen its done.
Yesterday I ran out of time and started getting these glitches. I reworked my flying saucer drawing code to use sprites, as you suggested to me a few weeks ago, and immediately reduced it from 6500 t-states to 130 t-states. LITERALLY 50x FASTER!!
SevenFFF / Threetwosevensixseven / colonel32
NXtel • NXTP • ESP Update • ESP Reset • CSpect Plugins
You are welcome!
Unfortunately you cannot edit old posts...
Hurray!!! :)