Curiosities

Technical Curiosities:


  • Which part was the most complicated in the conversion process? (by Daniel Caetano)
    • On this second conversion, certainly the most difficult part was the game loading. The game was totally compressed on tape, and was expanded by the loader, nd the expansion process was done on a very confusing way. It was impossible to stablish the needed relation between the source code and the loaded code. So the process had to be reversed, the data was expanded "by force" and then re-compressed for the final loader on MSX.

      There was another challenging aspect, but this time involving game improvements, like adding mouse support. It wasn't possible to use BIOS/SubROM routines due to two reasons:

    • It would be very slow, since the game destroys several vital aspects of MSX-DOS slot switching and a good part of MSX-DOS would have to be restored on each mouse input reading process (that means two big memory swaps).
    • It wouldn't work on MSX1, since MSX1 BIOS doesn't have mouse support.
    • These facts forced the development of a mouse driver that works on all MSX, from MSX1 at 3.57Mhz up to the OCM at 20Mhz. This part wasn't simple, since documentation on direct mouse access is very sparse.


  • How the game keeps simulation and user interaction so smooth? (by Daniel Caetano)
    • To my great surprise, I faced something I never though to see in a 8 bits machine game: multitasking. The game implements a system of preemptive task-switch, using the video interruption as an context swap activator. The system is really well done (and simple) using multiple stacks: when activated the context swap, the active stack is swapped on interruption and, when leaving the interruption, the execution is already on another process. Sometimes (when simulation is paused), this context swap is deactivated.

      As much as I could notice, the game has 3 parallel processes: one of them being responsible for the simulation, other for the map animation and another for user interaction. I may be mistaken on the function of some process (I didn't analyse them deeply enough), but I am sure one is relative to simulation, in parallel with other doing the user interaction. This allows a constant interaction with a constant simulation, smoothly, with no slow-downs and without the need to implement the game in turns.


  • Why the colors in the game differs from the ZX Spectrum on MSX1? (by Daniel Caetano)
    • In general, ZX-to-MSX1 adapted games differs a little in colorization. As in Ghosts'n Goblins, I tried to make the changes minimal and with the most pleasant change possible, without color or definition loss. On MSX2 mode, however, the color conversion was made to improve the visual, to get it closer to other machines' SimCity look and feel. For the same reason stated when Ghosts'n Goblins was out, the palette conversion is dynamic.


  • Previously it was said it wasn't possible a Spectrum game to be so fast on MSX. Now SimCity was converted with "full speed". How can this be explained? (by Daniel Caetano)
    • SimCity is a very complex game and great part of CPU time is spent on tasks not related to video... and video update is done less frequently than in an action game. In this conversion, the screen update is done on 6 steps, one on each interrupt; the result is the screen being updated 10 times per second. At this framerate, the speed loss due to screen updates is well minimized, although it still exists.

      However, it was possible to optimize some game routines, which did replicated unecessary work, and changing the mouse pointer from shape to sprite also helped; since Spectrum routines that did this job weren't the most efficient in the world, the speed gain was substantial. With those changes, the speed on 3.57Mhz ended being very close to the Spectrum game speed. At 7.16Mhz it was even necessary to include timing with HALT, to avoid the game to become too fast, keeping it on the desired speed.


  • Where did the game music came from, since I didn't hear it on Spectrum ? (by Daniel Caetano)
    • The music came from the Spectrum version itself. For any reason unknown to me, it seems the music never worked on emulators and, maybe, it doesn't even run on all Spectrum 128; when trying to load the game on 128 mode (where the music should play), a reset occurs, being necessary to run the game on 48k mode, with no music. On MSX, however, if there are 128k of Memory Mapper, the game will play the music normally, even on MSX1 (remember that the BIOS must be modified for this to work), not having known bugs on this part.


  • Why mapper and not megaram? (by Daniel Caetano)
    • Because mapper is the MSX' standard RAM extension, and because it made the conversion process easier, since mapper works in a similar way to the Spectrum memory mapping hardware (being the MSX mapper much more flexible, of course).



    Non-Technical Curiosities:


  • Which songs were the development "themes"? (by Daniel Caetano)
    • The game's PSG music.


  • What was the food consumed during the development? (by Daniel Caetano)
    • None, it was a rush job (didn't have time to eat)..


  • And the official project beverage? (by Daniel Caetano)
    • Ideal Guaraná.


    Visitante #61614 desta página

    03/19/2008


    # SimCity v1.0.0 released!


    03/11/2008


    # Web Page is now online!


    02/11/2008


    # Project started!