The last Sims/internal changes

13.02.2020

Tempest:
not finished. Attract mode works fine – but starting a game does not work yet. I guess the game has some sort of copy protection, which we haven’t emulated yet.
Also it needs pokeys – they probably have something to do with the protection as well.

Lunar Lander:
Seems to work fine.

Gravitar:
This is one of the things we need to „tweak“.
The distorted line have to do with „optimization“ and not doing a zero always.
If you use the terminal and type a „zdm 0“ than everything is way slower, but the lines are correct.
This is no emulation fault.

Asteroids (VecSim):
Crashes now! (haven’t looked into it)

Asteroids Deluxe:
Still these strange offsets… (haven’t looked into it)

Red Baron:
Is playable.


15.02.2020

I added a „global“ settings struct – available in baremetal.
This struct is not saved yet, but can be accessed from the loader and from the games equally. The settings are not applied automatically though.

Current structure:
(included with „vectrexInterface.h“)

typedef struct {
  unsigned char flags;
  void (*loader)(void);
  unsigned char orientation;
  unsigned char lastSelection; // in loader menu
  char parameter1[16];
} GlobalMemSettings;

extern GlobalMemSettings *settings;

If need be – just add additional variables to the structure. 
Just remember, these are as of now „standalone“ values. Meaning, the settings-> orientation is NOT the orientation.„orientation“ (as of now) handles the orientation.
So if you want to use the orientation of the settings you have to do a:

orientation = settings-> orientation;

within your program.

Tempest
Is playable. I circumvented the copy protection using emulation features :-). All piracy detection checks are done with a test for  4 locations being zero or not (zero -> everything is ok). So no matter what happens the read to those locations (for Tempest) always return 0 🙂

(see documented source at: https://github.com/smdjeff/Tempest-Source-Code)

Cinematronics
Updated with latest version found in Grahams folder.
The emulator is really slow compared to everything else.
VecSim uses somewhat about 10-15 % in non SBT mode – so 85% of the time can be used to draw vectors.
CinEmu uses about 70-80% -> there i not much time left for vector drawing. I hope this can be sped up a bit. (haven’t looked into it though).

Since I really like Speedfreak, I started to implement the input keys for that. I have done:

  • Coin
  • Start
  • Gas
  • Steer left/right
  • Gear 1
    (none of the other gears yer though 🙂 – but they should be copy paste…. but we probably have to remember what  gear we are in so we can do a gear up/down instead of one button for each gear, the Vectrex controller has only four buttons 🙂 ). 

This works well!

TimeOut

As said – I will go on a weeks „holiday“ soon.I will not program or change anything during that time. I haven’t done everything Graham emailed about. If some of the things still disturb you, please change them and „check the results“ in.
Before I do anything – I’ll let you all know. Tempest/red baron were the last of the Sims I wanted to work. So like also said before – now I will start enhancing the current emulations (make them look better in PiTrex, no emulation enhancement).
That will probably be
– Battle Zone
– perhaps Pokey/sound support

Config Menu
Changed slightly – I also allow scrolling now – and adding new config menus should be easy.One item added „orientation“.

BOOTING!
I renamed „our“ start kernel for the baremetal booting to „pitrex.img“. I changed the „config.txt“ in the boot partition to include the line:

kernel=pitrex.img

So that pitrex.img is loaded as the start „kernel“. This enables us to leave the default raspbian „linux“ kernel named as „kernel.img“.
I also changed the loader to load „kernel.img“ when „RASPBIAN“ is chosen (instead of linux.img).

Thats all…

Signing off…

Cheers