Abuse Ported To Gp2x V1.0


senquack

I feel a great disturbance in the source
Joined
Nov 1, 2006
Messages
1,167
Age
44
Location
USA
Website
Visit site
<b>Abuse ported to GP2X v1.0</b>

Archive link: <a href="http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,35,2677" target="_blank">http://archive.gp2x.de/cgi-bin/cfiles.cgi?0,0,0,0,35,2677</a>

shot0074.png


<a href="http://youtube.com/watch?v=ojrzuW2ZsEU" target="_blank">Youtube video</a> (not running on a GP2X, the GP2X version is identical and even has music where this doesn't:

<a href="http://en.wikipedia.org/wiki/Abuse_(video_game)" target="_blank">Wikipedia entry</a>

Abuse is a famous side-scrolling run and gun game originally released for DOS and Linux in 1996. It features beautiful pixel art, lighting effects, many weapons, and is a real challenge even on normal difficulty.

If you have an F200, just point and kill with the stylus. F100 users are also supported, as well as those using the traditional keyboard/mouse combo (through USB and the cradle).

My GP2X port features MP3 versions of the MIDI files included with the original game, remastered with a very high quality soundfont collection. This is the only modern version of Abuse that I am aware of that features the music, but I didn't make an exhaustive search or anything. This port is basically a better experience than the Abuse-SDL provided by any modern Linux distribution.

I haven't had enough time to do a run-through of the entire game, so there might be some unfound bugs. I have spent a lot of time on this port, hundreds of hours, so it is by no means quick and dirty.. I just moved recently so I am making this post and archive update from a McDonalds down the highway on a notebook I am fixing for my boss
<
.

Have fun, I might not be back for a few days if there are problems, please be patient as I have no real Internet.
 
Last edited by a moderator:
Beautiful! Never heard of this game, but the port looks incredibly. Downloading...

Regards,
Stephan
 
Awesome! Abuse is one of my favorite games of all time, so it's nice to see it on the GP2X. - This one is long overdue and I'm a little bit surprised it's taken this long to get on the GP2X since an open source SDL port has been available for a while. Thanks much, can't wait to give this a try when I get home to my GP2x!

Are you going to do a Pandora port when it comes out?
 
Senor Quack said:
I have spent a lot of time on this port, hundreds of hours
Wow that's some serious commitment! I think I'll download it just because you spent so long on it. I've never heard of this game before though. How do the controls work on the F-100? It looks like on the youtube video that you need a mouse to aim.
 
Last edited by a moderator:
I never played Abuse before either, but it seems like a cool game. Thanks for taking the amazing amount of time to do such a solid port, it's a lot of fun to play even with F-100 controls :) The graphics are a bit too dark, but tweaking Gmenu2x's gamma setting should take care of this.

All your ports are of incredible quality, speaking of which it's about time I got into some more Star Control :)

Thanks again!
 
This is definitely one for my card. Won't get played for probably a week or so, but it'll be there for when I have the time!

Thanks so much for the effort, Senor Quack!
 
OK, I've found that if I put this notebook up high in a corner of the house I can steal my neighbor's internet and not drive to McDonald's :)

Illuminerdi said:
Awesome! Abuse is one of my favorite games of all time, so it's nice to see it on the GP2X. - This one is long overdue and I'm a little bit surprised it's taken this long to get on the GP2X since an open source SDL port has been available for a while. Thanks much, can't wait to give this a try when I get home to my GP2x!

Are you going to do a Pandora port when it comes out?
Sure, I'll probably also get a Wiz too so you'll see it on both Pandora or Wiz. Might not get either of those until the second batches come out, though. I was surpised, too, by how hard it was. More on that below.

chris_r said:
Senor Quack said:
I have spent a lot of time on this port, hundreds of hours
Wow that's some serious commitment! I think I'll download it just because you spent so long on it. I've never heard of this game before though. How do the controls work on the F-100? It looks like on the youtube video that you need a mouse to aim.


With the F100, you run left and right using the triggers, you use the Y button to jump, X to move down. The stick controls the shooting, so you can shoot in 16 directions basically. If you have a DPAD-modded F100 you're limited to 8 directions. It is a compromise, since you actually have 24 directions possible with the mouse/stylus. You can still play the game just fine, though. I fine-tuned the angles a bit to make aiming up and down ramps easier (you do a lot of that, believe me). If you want to know what all the controls are, the port will auto-detect what unit you are running and show the controls list on the main menu screen when you start it up.

As for why it took so long: The input system for Abuse is maze-like. So, I had to find a way to get mouse cursor simulation working for the GUI parts (for the F100) and also find ways to get full control over the player once they are in the game and do away with the mouse cursor completely in those parts. No matter how many times I tried, something always wasn't right. Well, I spent all my spare time for a month or two redoing it over and over and I finally got it right :)

I also had to fix a structure padding problem that only surfaces on ARM architectures involving the palettes. I also had to apply all the Debian patches (they are great about keeping old games up-to-date) and somehow I forgot a few and only much later did I realize this. I also found the game ran out of memory after only 20 minutes. I had to change the size of the Lisp heaps and convert them to use a real garbage-collected heap. I also converted the sound engine to use SDL_Mixer so I could have music. I had to change quite a bit of code to get the proper songs playing. I had a heck of a time just getting anything to appear on the screen in 8-bit palettized mode (for some reason this was real finicky with HW SDL). After I got all the input code working, and moved to heavy compiler optimizations, I found that the angles for 1/4 of a full circle when shooting with the mouse were completely wrong, so shots were being fired at strange angles. Only if I used -O0 would things work. So, I had to replace the atan2 lisp function with a wrapper that calls atan2f and it was fixed :) I am probably forgetting so many other little things, but that's some juicy details..

Alex. said:
I never played Abuse before either, but it seems like a cool game. Thanks for taking the amazing amount of time to do such a solid port, it's a lot of fun to play even with F-100 controls :) The graphics are a bit too dark, but tweaking Gmenu2x's gamma setting should take care of this.

All your ports are of incredible quality, speaking of which it's about time I got into some more Star Control :)

Thanks again!
Thanks! BTW the game has a gamma adjustment on the main menu (it seems to set the colors too dark if you choose what it tells you, try playing with it to achieve the best results. It is supposed to be a dark game but if you play in a lit room it is best to turn it up.



Also: before anyone spots it, you will probably find the torso of the player disappears using the lift on the first training level. It's a known bug that is caused by disabling the buggy Lisp caching and is just not worth hunting down, as it only occurs once in the game.
 
Last edited by a moderator:
Thanks so nuch. Will dust out my F200 for this.

You should submit this code to the official abuse-sdl as it should be much more portable now.

Maybe GPH would include it on the Wiz game CD.

Hope you get your internets back soon.
 
There have been so many threads saying "I'm porting Abuse." I'm so glad to finally see it happen! Thanks!!
 
As for why it took so long: The input system for Abuse is maze-like. So, I had to find a way to get mouse cursor simulation working for the GUI parts (for the F100) and also find ways to get full control over the player once they are in the game and do away with the mouse cursor completely in those parts. No matter how many times I tried, something always wasn't right. Well, I spent all my spare time for a month or two redoing it over and over and I finally got it right :)

I also had to fix a structure padding problem that only surfaces on ARM architectures involving the palettes. I also had to apply all the Debian patches (they are great about keeping old games up-to-date) and somehow I forgot a few and only much later did I realize this. I also found the game ran out of memory after only 20 minutes. I had to change the size of the Lisp heaps and convert them to use a real garbage-collected heap. I also converted the sound engine to use SDL_Mixer so I could have music. I had to change quite a bit of code to get the proper songs playing. I had a heck of a time just getting anything to appear on the screen in 8-bit palettized mode (for some reason this was real finicky with HW SDL). After I got all the input code working, and moved to heavy compiler optimizations, I found that the angles for 1/4 of a full circle when shooting with the mouse were completely wrong, so shots were being fired at strange angles. Only if I used -O0 would things work. So, I had to replace the atan2 lisp function with a wrapper that calls atan2f and it was fixed :) I am probably forgetting so many other little things, but that's some juicy details..

[/quote]

That's some serious work - I never imagined that it was so difficult since it had already been ported to SDL. I'm just glad someone took the time to do it, since your code changes (as someone else pointed out) should help the overall portability of the game - definitely submit them to the official code tree on sourceforge if you feel so inclined. This is one of my all time favorite games, so the more platforms it gets ported to, the better! Thanks again!
 
I am impressed that you took so much time considering all the different control schemes and what would be best for the respective platform. I have an F100 and it's nice to see that all 16 directions are being utilised which is rare for ANY software on the device. Having an unmodded F100 could actually be an advantage over a Dpad F100 for a change which I think is cool.
 
Wow! What an excellent game and port. :)

It's great to see more games having (good) touchscreen support.

No centering? I guess it'll mess with the touchscreen.

Nice work, and thank you very much. :D
 
Words cannot express your commitment to awesomeness, Quack. This was always one of the games that cried out for the GP2X...I knew it was in Lisp but I had no idea how much work people were facing trying to port it. This is *almost* as sweet as your UQM port :D A thousand kudos to you.
 
I tip my hat to you, Senor Quack - this is an amazing piece of work.

I was download #1 from the archive for this as soon as I saw the newspost on the frontpage (as a "locked" forum entry before it had cleared moderation and hit the "news" section) and I rushed to get it onto my card.

You have truly excelled yourself here. I know what a pig some parts of that code are. Please, Please tell me you have your sourcecode backed up in lots of places.

Senor Quack said:
With the F100, you run left and right using the triggers, you use the Y button to jump, X to move down. The stick controls the shooting, so you can shoot in 16 directions basically. If you have a DPAD-modded F100 you're limited to 8 directions. It is a compromise, since you actually have 24 directions possible with the mouse/stylus. You can still play the game just fine, though. I fine-tuned the angles a bit to make aiming up and down ramps easier (you do a lot of that, believe me). If you want to know what all the controls are, the port will auto-detect what unit you are running and show the controls list on the main menu screen when you start it up.
Few quick comments - I understand why the control system is so complicated and it'll take some getting used to but I did three or four levels straight off, including many of the secrets, and it played fine apart from the "lose your legs on the elevator" bug. The interruptions to tell you the keys are incredibly annoying though. They are slightly too long and far too often. I haven't yet looked to see if there's an option to turn them off because I got into the game and by the time I came out, it was time for bed. It also has quite a large startup time which will put people off. Any chance of just printing something like "loading" at least or, failing that, some of the LISP initialisation messages that the PC version did while it's loading? I feared that you'd put out a version which didn't run but steeled myself and waited patiently and was eventually rewarded with a marvellous port.

For those who haven't played abuse - go get the original PC version and stick it on your PC. Play through the first level and get to the part where the red aliens first appear - with a decent speaker setup you will c**p yourself when they screech at you. Also, the thump-thump-thump of some of the automated gun turrets is amazing with proper bass. The atmosphere is amazing in the game and I never understood why they didn't develop it further.

The work in the game itself is brilliant but the work to get the code (even the Abuse-SDL with all the Debian patches etc.) working decently on another architecture is absolutely phenomenal. I'm sure a lot of Abuse ports will now appear for other platforms too based on this code (there are some already based on Abuse-SDL and the like but they tend to experience lots of similar problems or be closed-source).

Senor Quack said:
I also had to fix a structure padding problem that only surfaces on ARM architectures involving the palettes.
Yep, I've run into the same types of problems with some non-ARM stuff that I've ported to ARM.

Senor Quack said:
I also found the game ran out of memory after only 20 minutes. I had to change the size of the Lisp heaps and convert them to use a real garbage-collected heap.
That's no mean feat. Just debugging some of the stuff inside that LISP part was a nightmare beyond my worst nightmares.

Senor Quack said:
I also converted the sound engine to use SDL_Mixer so I could have music. I had to change quite a bit of code to get the proper songs playing.
I haven't yet played it with headphones but the sounds on the PC version were brilliant and the GP2X sounds as faithful as it's little tinny speaker can manage.

Senor Quack said:
After I got all the input code working, and moved to heavy compiler optimizations, I found that the angles for 1/4 of a full circle when shooting with the mouse were completely wrong, so shots were being fired at strange angles. Only if I used -O0 would things work. So, I had to replace the atan2 lisp function with a wrapper that calls atan2f and it was fixed :)
I hate weird errors like that. Optimisations shouldn't break code. I can understand it on the stuff I've been working on recently, where I've been doing Valgrind runs on my code, and Valgrind insists of running with -O0 code because of the optimisations "tricks" confusing it and throwing up spurious errors that aren't really errors (because, I assume -O3 code does quicker initialisation of memory it knows will be empty when it starts etc.).

Alex. said:
I never played Abuse before either, but it seems like a cool game. Thanks for taking the amazing amount of time to do such a solid port, it's a lot of fun to play even with F-100 controls :) The graphics are a bit too dark, but tweaking Gmenu2x's gamma setting should take care of this.
Abuse has it's own gamma settings on the menu, you know! You click the gamma icon on the main menu and then click the darkest black you can easily see (or a lighter one if everything is too dark).

Good job on this. What's your next project?
 
Last edited by a moderator:
Just wanted to give my upmost thanks for this excellent port of Abuse for the GP2X as I've been using my old DOS box PC (386SX-25MHz 8MB RAM) to play the original game. I am in two minds to finally put the PC to rest and let it go to Silicon Heaven. :unsure:
 
I am so excited to see this port finally make it to the gp2x. Awesome job!
 
Back
Top