Paradroid Wii

From GameBrew
Paradroid
Paradroidwii2.png
General
AuthorOkachobi
TypeArcade Games
Version0.6
LicenseGPL
Last Updated2009/06/22
Links
Download
Website
Source

Port of SDL Paradroid to the Wii. SDL Paradroid is a fanmade Windows remake of Paradroid, a classic Commodore 64 game that was released for the Atari ST and Amiga.

Note that this is not to be confused with the version on the Wii Virtual Console in Europe, all code and graphics are from the freely-available SDL Paradroid written by David Berry, released in 2002 under the GPL license. It has simply been patched in various ways to be compatible with the Wii Homebrew SDL library.

Installation

Install the Homebrew Channel if you haven't.

Extract archive to the /apps directory of your SD-Card. Insert card and launch from Homebrew Channel.

Alternatively, and preferably, use the Homebrew Browser to install this and many other great games.

User guide

The droid crew of a galactic space freighter has turned against their masters. A droid "Influence Device" has been beamed aboard to help you regain control of the situation.

Your goal is to clear all droids from each of the space freighter's 20 decks. When you have completely cleared a deck of droids, the ship's computer shuts down the deck lights and you are awarded bonus points.

You use the Influence Device to destroy the droids on each deck by shooting them, ramming them, or temporarily taking control of a droid's circuitry (called "transferring" in the game) to redirect its energy and armaments against its own kind.

Transferring to a droid is a key element of strategy in Paradroid, and the game's most fun feature. When you successfully transfer to another droid, the Influence Device assumes all of the capabilities and characteristics of that particular droid. It is always fun to discover each droid's abilities, especially since virtually every droid has more power than the Influence Device.

In addition to reflexes, sound strategy is also important in Paradroid because the Influence Device, or any droid that you have transferred to, will begin to run out of energy after a period of time. This means you have to continually transfer from one droid to the next to avoid getting burned out.

Controls

D-Pad - Move, Select items on terminal, Move up/down lift

2/B - Fire (while moving), Enter transfer mode (prior to moving), Use terminal or Hatch (not moving), YES (Y/N question)

1 - View Console, NO (Y/N question)

A - Pause

Home - Exit game

Transfer mode:

D-Pad - Select node in transfer mode

2/B - Connect artificial neuron while in transfer mode

High score input:

D-Pad - Change letter (up/down) and position (left/right) in high score

2/B - End high score input

Media

SDL Paradroid Wii Homebrew (okachobi)

Changelog

v0.6 2009/06/21

  • Thanks to Teknecal for his help tracking down this issue. The problem did not affect my Wii, but some Wii's or SD cards apparently do not work with the old libfat path style that lacks the sd: prefix. Full sd: paths have been added to all files. That is the only change in this release and should fix compatibility.

v0.5 2009/06/20

  • Teknecal has reported a problem during launching and I'm working on a solution.

v0.5 2009/06/16

  • Crashing due to the old SDL Port from Gamecube should be gone now.
  • Changes in v0.5:
    • Lift teleport issue should be fixed.
    • Now relatively stable with no crashes during testing thanks to a new version of SDL.
    • Performance has improved considerably with the new SDL.
    • The delay after configuring droids is now gone.
    • Files now combined into 1 7-Zip file for easier setup.
    • Enjoy.

v0.4 12/04

  • I believe the final major crash bug has been fixed.
  • No longer alpha. Ready for inclusion in homebrew browser.
  • Changes in v0.4:
    • Yellow and Red Alerts no longer continuously contribute to your score.
      • This was a feature of SDL Paradroid, but not the original C=64 Paradroid. It caused an issue where the backlog of points tricked the game into believing you were on a continuous rampage and never lowered the alert states since it detected a killing spree by looking at the score backlog. This may have worked ok on the PC, but its possible that when I changed the frame-rate timing method that it broke the timing that made this work. It was a good feature in SDL Paradroid, but at least for now its gone.
      • Now Yellow and Red Alerts will give bonuses for all bots destroyed or overtaken.
    • Bugs fixed around actual number of levels and macros that defined max levels - I *believe* this was causing the crashes by overrunning buffers (this wasn't an issue in Paradroid SDL because it statically allocated the level array to the max allowed levels and not the available ship levels. When I changed this code to do dynamic allocations this apparently caused this issue).
    • Memory leaks found and fixed.
    • Birds-eye view map offsets fixed.
    • Scoreboard should be fully functional.
    • Boundary checks added for level array to prevent bad x/y coords from crashing game- though I think this might have been caused by the level mismatch bug.
  • Known Issues:
    • Lift teleport issue- lift on a certain level will teleport you to another lift if you activate it, then exit without changing levels.
    • Bots sometimes get confused or stuck - but hey, they're bots, right?
    • Sometimes after a successful transfer the transfer sound doesn't play and you exit the transfer screen immediately.
    • Occasionally it seems like a successful transfer results in a tie- but its likely a display update issue.
    • Version printed during boot says .03, but binary is up to date.

Status update part 3 11/30

  • Although the memory leak is fixed, I've now uncovered another bug that causes a complete freeze after playing for some time. I have no way to troubleshoot this sort of issue on the Wii, so I intend to go ahead and release the code since I have no reliable way to determine the cause. In the meantime I'll back-port the Wii-SDL Paradroid to Windows so I can use Boundschecker to find any references to uninitialized memory or buffer under/over-runs. I have taken these things for granted on Windows and the majority of the Paradroid code is not my own. This is going to take a little time, but again, maybe I'll have this resolved by new years. Wii Homebrew needs an electricfence port.

Status update part 2 11/29

  • The memory leak was found! I'm going to clean up a few issues this evening and hopefully have a beta-quality release by Monday. I'm not quite sure how to handle QA/Testing with homebrew apps, but as of the next release I'll ask for teknecal to add it to the homebrew browser. Wiibrew needs a bug database.

Status update only 11/23

    • Over the holidays I intend to do a deep dive and find the remaining memory leaks that prevent this from being of releasable quality. I held back efforts for a while after Nintendo released their patch drawing into question the future of HomeBrew apps. I hope that Nintendo some day sees this community as a benefit to their console and supports it with some official support for homebrew applications.

New alpha release with sound 10/16

  • Still not a stable release and will crash due to memory leaks.
  • Fixed:
    • Sound enabled.
    • No longer dependent on SDL_mixer callback that crashes program.
    • Overhead map displays on console- offsets need adjusting.
  • Known issues:
    • Memory leaks will eventually consume all memory and cause a crash.
    • Scoreboard doesn't save.
    • Occasionally players droid loses ability to attack?!?
    • Red/Yellow/Green Alerts not properly resetting- points continuously increase after Red Alert.
    • Bots still get stuck.
    • various other issues that will be resolved after the major memory issue.

Sound rewrite 10/15

  • Disabling sound fixes the crash issue. I'm in the process of thoroughly reviewing my use of SDL_mixer and if that fails, I'll drop in a replacement audio library.

Plea for help 10/03

  • I have sound working but I'm now seeing seemingly random freezes where the screen goes black and the code locks up. There is no core dump or display of registers or stack trace, so I have no way to know what is causing it. I don't yet own a USB Gecko, and there appears to be no pattern to this, so I have no way to debug this issue. If any developer reading this owns a USB Gecko and is willing to take the code and run it with a debugger to help find the problem, please contact me either through the discussion page or my email on my user page. I probably will not put up a binary with sound until the freezes are fixed, at which point it may be ready for release. So its very close, but I could use some assistance to push it over the finish line.

Updated preview (alpha) release 09/25

  • Fixed:
    • Explosion graphics now work (libFAT issue with long filenames).
    • Memory usage significantly reduced.
    • Performance improved considerably.
    • Frame rendering code changes.
    • Level properly dims after cleared (also libFAT-related).
    • More logging added (logfile may grow faster as a result).
    • Distribution zip size reduced.
  • Known Issues:
    • Sound disabled purposely - will start working on it soon.
    • Top down map on consoles not functioning yet.
    • Red/Yellow/Green Alerts not properly resetting- points continuously increase after Red Alert.
    • Collisions seem wonky - droids get stuck - need to check if I introduced this bug.
    • Impossible to input scoreboard entries.
    • Scoreboard file apparently has byte order issue.

Packaged preview distribution - try at your own risk 09/20

  • Download available for testing purposes.
    • Extract zip to your apps/ directory on sdcard for Homebrew Channel launching.
    • beware- it logs to the SDCARD under the /apps/Paradroid/Data directory/*.log - this file can grow large in time .
  • Still no sound - and little memory available to load sound .
  • Modified original to support some surfaces as 8bpp to save memory.
    • planning to use late-loading of surfaces based on need to reduce overall usage.
  • Temporarily eliminated screen-flash during disruptor fire to save memory.
  • Converted some graphics to 8bpp to use less surface memory.
  • Freed splash screen after use.
  • Re-enabled 32bpp main surfaces now that some memory is available.
  • Top-down map view doesn't work from computer consoles due to memory constraints.
  • Key mapping won't work - don't bother trying it- just use wii-mote turned sideways.
    • D-PAD moves droid, 2 fires, 1 toggles console, holding 2 while moving initiates transfer mode, home button exits.
  • Explosion graphics don't seem to be working quite right.
  • Droids get stuck a lot (not sure if this was an issue in original SDL Paradroid).
  • There appear to be bugs related to the damage processing.
  • 'Dead' levels (cleared levels) don't appear to switch to the darkened tileset .
  • May still crash due to lack of memory and possible leaks.
  • display code needs rewritten so as not to allocate a 4 meg offscreen map...
  • looking for help in trimming memory usage, email me if anyone is interested in assisting.
  • thinking about getting a USB Gecko thingy to do some real debugging.
  • Elevator side view fixed (byte order issue while reading data file).

Milestone reached - playability 09/14

  • Worked around printf()/sprintf() issues by writing my own versions.
  • SDL port doesn't directly support Wii D-Pad and only sends buttons when IR is active.
    • Added code to Paradroid using WPAD Library to read Wii Controller and translate to SDL Key events.
  • Removed Physfs since there is not a Wii Port yet (and a compressed data file is not essential).
  • Fixed numerous memory leaks, possibly introduced by remove physfs.
  • 'Fixed' file logging- which requires open/close on each log write to the sdcard.
  • Sound currently disabled- need to find FMOD port, or rewrite for SDL_mixer.
  • Fixed byte-order issues with level loading code.
  • Fixed a few uninitialized structures that apparently were getting zeroed automatically by other implementations of malloc.
  • Ran out of memory and had to reduce bitdepth from 32 to 8. Will try to cut some fat and go back to 32 bit if performance is ok.
    • If anyone who knows SDL fairly well can give me tips for mixing 8 with 32 bit display surfaces to save memory, it would be appreciated- the existing code seems to convert all surfaces to the same as the main display, probably for performance?
  • Apparently SDL for Wii does not support hardware surfaces.
  • Explosions are causing an SDL bitblit option not supported- may be alpha issue with 8 bit graphics.
  • Other bots seem to walk right through your droid- I thought they bounced off in the original?
  • Side-view and top-down maps don't appear to be working.
  • Elevator side-view also not working.
    • Suspect another uninitialized structure issue or byte order issue with data files.

Work began on port 09/05

External links

Advertising: