Game Control

Attempting to understand how Wicked works, particularly the growth mechanics, requires some analysis of the code. https://tetracorp.github.io/guide/reverse-engineering-amiga.html is a fantastic guide to getting started with attempting to disassemble the program.

The game was developed with Mirage Assembly Language Programming System on a Mega ST. https://www-stcarchiv-de.translate.goog/stc1988/08/mirage?_x_tr_sl=en&_x_tr_tl=de&_x_tr_hl=en-US&_x_tr_pto=wapp // http://www.atarimania.com/utility-atari-st-mirage_40313.html

I don’t have the Wicked source code so am working from a disassembly without a symbol table, but I am hopeful that it can be preserved and not lost to time, like so many other games!

The main game routine will probably comprise of (and probably not limited to – this is just an educated guess) subroutines or functions that do the following (in no particular order, and that I’ve not yet identified in the code)

Flowchart

  • Display screen from $10000 or $18000 (double buffering?)
  • Growth calculations
  • Player movement
  • Guardian movement
  • Servant movement
  • Shooting
  • Collision detection
  • Timer events
    • Shot growth timer
    • Tarot
    • Spore
    • Spore timer
    • Spore movement
    • Servant timer
    • Power crystal movement
    • Power crystal timer
    • Worm movement
    • Day/Night cycle
    • Check for level complete/end
      • Check remaining portals
      • Check timer
      • Check lives for game over
  • Update screen

A timer for the level is stored in $552.
The score is stored in $5CC.
Energy is stored in $4B4. Starts at 0x2F00 at start of level (mid-point of energy meter). Values 0 (min) < 47 > 95 (max) – 0x0, 0x2F00, 0x5F00 bit shifted 8 bits to the right, so divided by 256. If the energy value reaches 95 (0x5F00) then the guardian is sent to Pandaemonium, and if the energy value reaches 0, then the player loses a life.

Leave a comment

Create a website or blog at WordPress.com

Up ↑