Paradroid

From WiiBrew
Jump to navigation Jump to search
Paradroid
Paradroid.png
General
Author(s)Okachobi
TypePlatform game
Version0.6
LicenceGPL
Links
Download
Source
Downloadable via the Homebrew Browser
Peripherals
Wiimote.svg

Description

A version of SDL Paradroid compiled for the Wii to fill the void in the U.S., where the virtual console lacks C64 games. This version is created from the GPL'ed source code from SDL Paradroid and uses the same data files. The source will be released in accordance with its original GPL license as soon as I get to a stable version. I had considered abandoning the project because of the virtual console version, but then realized its not available in the U.S., and noticed that there are at least 2 PC remakes of Paradroid and several for mobile platforms. So if you like Paradroid and live where it is available, support the virtual console by purchasing it. Otherwise, wait a little while and give this port a try.

This version is in no way derived from the version available on the Wii Virtual Console in Europe. All code and graphics are from the freely-available SDL Paradroid 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 Instructions

Install the Homebrew Channel if you haven't. Download the 7-Zip Archive file and extract it 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!

Controls

Wiimote.svg Action
Wiimote D-Pad Move
Select items on terminal
Move up/down lift
Select node in transfer mode
Change letter (up/down) and position (left/right) in high score
Wiimote 2 Button or Wiimote B Button Fire while moving
Enter transfer mode prior to moving
Use terminal or Hatch while not moving
Connect artificial neuron while in transfer mode
End high score input
Select YES in Y/N question
Wiimote 1 Button View Console
Select NO in Y/N question
Wiimote A Button Pause
Wiimote HOME Button Exit game

Source Code

Paradroid_Wii-src-0.4.rar is now available. This source code is licensed under the GPL and is a derivative of the SDL Paradroid source code written by David Berry available on SourceForge. You will need the artwork from the SDL Paradroid Wii binary distribution as well as the SDL_Port, SDL_mixer, SDL_image, libjpeg libraries. There have been modifications to the art supplied with sourceforge Paradroid SDL to change bit-depth and reduce memory consumption. make will likely fail out of the box until you customize the search locations for these libraries. IDE Project files are provided for XCode on Mac, and Programmer's Notepad (included with DevKitPro on PC).

Problems

I appreciate any reports of issues and will try to resolve any reported issues. If you have a crash or other issue, please contact me and include the stack trace (the numbers separated by "=>") from the crash dump screen along with the logfile.log from the apps/Paradroid/data directory of your SDCARD.

Status (in detail)

  • 06/21/09 - Problem resolved. v0.6 released. Happy Father's Day!
    • 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.

  • 06/20/09 - Problem reported with v0.5
    • Teknecal has reported a problem during launching and I'm working on a solution.

  • 06/16/09 - v0.5 Released
    • 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!

  • 12/4 - v0.4 Released!
    • 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

  • 11/30 - Status update part 3
    • 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!

  • 11/29 - Status update part 2
    • 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...

  • 11/23 - Status update only
    • 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.

  • 10/16 - New alpha release with sound
    • 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

  • 10/15 - Sound rewrite
    • 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.

  • 10/3 - Plea for help
    • 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.

  • 9/25 - Updated preview (alpha) release
    • 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

  • 9/20 - Packaged preview distribution - try at your own risk
    • 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)

  • 9/14 - Milestone reached - playability
    • 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

  • 9/5 - Work began on port

Download

Can be downloaded at the web archive.