| |
Evening Star Enhanced [2023] |
|
Released by : Grue
Release Date :
23 December 2023
Type : C64 Game
|
Credits :
SIDs used in this release :
Download :
Look for downloads on external sites:
Pokefinder.org
Summary Submitted by Grue on 23 December 2023
Evening Star Enhanced Edition
Why, you may ask? It's a slow niche simulator for a steam engine.
I also wondered about that, but I frequently loaded Southern Belle from Tape, which intrigued me. I had no instructions, and my English skills were a lot worse than today. Somehow, I figured it out so much that I got the train moving and discovered that buildings, stations, and tunnels were on the way.
The 21st Century came, and U64 has a turbo option for the 6502, so I started to wonder if older games would work with it, and Southen Belle popped into my mind. So, I started experimenting with it and made some YouTube videos about faster execution on my YT channel.
But then the "winter came." I bought my old childhood home, and all my time and money went into renovating an old house. After a bit less than two years, I had to get something else to think about than my still ongoing renovation project, and I found out that Southern Belle had been improved and released with a new name and track:
Evening Star
I had a lot of notes about the Southern Belle game engine zero page and routine names already, so I focused on the Evening Star. It was easy to see that the codebase was almost the same, almost but not 100%, so there are some changes to the game engine. I used Ghidra for the reverse engineering part of the game, and after I was finished there, I moved on to 6502Bench to get the sources. I painstakingly got through the code again on 6502Bench and named all the known routines and variables to get a recompilable source. It took some time to get it 100% relocatable, but finally, I had the source code for the whole game.
It became clear that the game had been limited to other 6502 platforms with only 32k of RAM, but the c64 port wasn't enhanced. So the code had been heavily optimized for size and not for speed.
I timed High-Speed Run on the original release, which took approximately 7 minutes and 39 seconds. It was a good baseline for improvements. Ultimately, I implemented the CIA TOD clock timing feature to see if changes made it faster, and it got a way faster in the process.
I also implemented some new features like the Help Screen during the gameplay and imported the Evening Star train
image from the ZX-Spectrum version of the game to the title screen.
Duce / Extend painted excellent loading gfx for the "intro" part. Initially, I asked him to convert the original Spectrum loading image, but Duce suggested a new piece as the original was lame.
Some speed enhancements:
- C128 2Mhz mode in the borders
- if REU is Detected, it is used to clean Gfx Buffer and for copying it to the bitmap
- A lot of speed code added for places it needs to be
- Pixel plotting integrated into line drawing routine instead of JSR/RTS to it
- Game math speed improvements
- Smoke drawing routine rework
- TNT / BF overhauled the 3D engine and objects into a more optimized form. It's still not 100%.
There's still room for more improvements, but this project hasn't been touched for over 10 months, so I decided to release it.
The game also included a lot of small touches and polish here and there, which are too long to list here,
but do check the Changes.txt for the pains involved in developing this version.
During the gameplay, hit F1 for the help screen and F7 for stats on how many frames the last scene took time to draw.
You cannot really count the hours spent on this kind of process; reverse engineering binary into source code is a very slow process and, in a way, very addictive. Coding new features and modifying original code requires understanding how the game works; there are no real shortcuts to this.
.
Tools used for this:
RetroDebugger - For finding out what zero page locations game uses and their meaning, lots of trial and error
Debugging and testing
Ghidra - For general reverse engineering of the code
6502Bench - For generating 64tass compatible sourcecode
010Editor - Modifying bits and pieces
Speedcrunch - for various calculations
Multipaint - Importing ZX-Spectrum gfx from the screenshot and converting it to hires data
VSCode - For all source and text editing needs.
64tass - Compiler of my choise
Vice Emulator - Testing, debugging, and checking initial c128 and supercpu compatibility. I also figured out that 64-bit builds of vice crash randomly at the start on Windows. It took me a way too long to realize that, but using x86 builds works better. |
|
|
|
| Search CSDb |
| Navigate | |
|
| Detailed Info | |
|
| Fun Stuff | |
· Goofs · Hidden Parts · Trivia
|
|
| Forum | |
|
| Support CSDb | |
|
| |
|