Jump to content


Photo

I Am Going To Try And Port Abuse


  • Please log in to reply
9 replies to this topic

#1 Kamiyay

Kamiyay

    X-S Young Member

  • Members
  • Pip
  • 41 posts

Posted 26 June 2006 - 04:19 PM

Okay, I have little to no programming knowledge. I took a c++ class way back in the day, but couldn't keep up do to the workload of the other classes that I was taking at the time. So I don't exactly know c++, but I do still have the book (which I have been reading) and I can debug simple code. I have been reading on the forums here about how to porting games, and to be honest, I wasn't exactly to excited with what I heard.

QUOTE("BenJeremy")
Please understand a few things:

1. To port any game to the Xbox you need: A) REAL Source code and cool.gif It should be DirectX based - if you cannot handle these two requirements, don't even bother asking about it.

2. Porting is still not a trivial task. It takes time, effort, and experience to pull off.


Not very encouraging to someone who doesn't know a lot. However then I happened to stumble accross nes6502's little porting guide. Still sounds hard, don't get me wrong here, but it at least now sounds feasible. So according to his guide I need:

QUOTE("nes6502")

1) XDK
2) Visual Studio 2003. NET
3) You do not need a debug XBOX (even though it is helpful). Without one, you will be burning CDís every time you want to test a change.


K not hard to get these, and number three was a relief to hear. I also hear its best that the source is written in C.

I wanted to port Abuse myself for 3 reasons.

1. Because school is out for the summer I have an ass load of free time on my hands and frankly I am bored.

2. Abuse is a kick ass game. Hard as hell, but still kick ass. If you haven't played it, you dont know what you are missing.

3. I am tired of seeing all these posts (heck I think I even made one of my own at one point) of people asking for stuff to be ported. If you want it ported guys, nes6502 is right here, you will need to port it yourself. Don't just ask for a port, or plan to "lead a porting project" where everyone else does the work. (The later is just fucking annoying!) Ports do take time, and cost money, (simple econ here, you give up opportunity costs by choosing to port something rather than selling yourself on the corner for cash. Yeah that was a crappy example, but it gets the point across that you are giving up an opportunity to make money by choosing to port something) so show people you really want something ported and take some initiative. The community around here, for at least as long as I have been lurking around, is really nice and if you put effort into it they will try and answer questions you may have.

Ok so now onto my idea (which is totally unoriginal) of porting Abuse. I can go about this in 2 different ways.

1. A full port. Get this to acually work as a homebrew app. The source is here. It's written in SDL, not C as I had hoped, so my questions are: Does this make this easier or harder to port? Is there extra steps to make this work? Is it just plain impossible to port an SDL package (me thinks not because of SDLx, which can't be too different I guess)? I will be googling tutorials, any links that you think may help would be greatly appriciated.

2. An odd idea that may work. I know nothing of running linux on my xbox (I guess there is a time to try everything) and I think that if I use the Linux packages of Abuse I may get it to work there. It's a long shot, but it may work. So it would be like running ePSXe or OpenMUGEN at that point. Tell me what you guys think of this idea. If I get good thoughts I may try this first.

Anywho wish me luck, I will be trying this ASAP. And hopefully I will be able to port this puppy. I have always wanted to contribute to this community somehow. Sorta give back to those who have brought me hours of joy. Hope this works!

#2 Kamiyay

Kamiyay

    X-S Young Member

  • Members
  • Pip
  • 41 posts

Posted 26 June 2006 - 05:34 PM

edit: xMUGEN not OpenMUGEN. Sorry guys...

#3 Likklebaer

Likklebaer

    X-S Freak

  • Members
  • PipPipPipPipPip
  • 1,689 posts
  • Location:UK
  • Xbox Version:v1.6
  • 360 version:unknown

Posted 26 June 2006 - 05:40 PM

Just FYI, I remember XPort saying a while ago that he had tried to port Abuse but there were some issues that couldn't be resolved (either I don't remember the details or they were never given).

But if you're not bothered by that then I wish you all the luck in the world with your port.

#4 nes6502

nes6502

    X-S Freak

  • Members
  • PipPipPipPipPip
  • 1,799 posts

Posted 26 June 2006 - 06:14 PM

QUOTE
1. A full port. Get this to acually work as a homebrew app. The source is here. It's written in SDL, not C as I had hoped, so my questions are: Does this make this easier or harder to port? Is there extra steps to make this work? Is it just plain impossible to port an SDL package (me thinks not because of SDLx, which can't be too different I guess)? I will be googling tutorials, any links that you think may help would be greatly appriciated.


Allow me to clear up a misunderstanding. C is the programming language. SDL is the library used to handle the graphics, input, etc..

Many programs are written in a language (like C, C++, Assembly) and use a library to draw the graphics (like SDL, OpenGL, DirectDraw, Allegro, Direct3D)

I havn't looked at the code for Abuse but as long as it is written in either C or C++ it should work.

99% of the "porting" of any application or game to the Xbox is this:

Find the code that draws the screen, plays sounds, and reads the input.
Then replace this code with Xbox compatable code.

For example, if the game had a RenderScreen() method that made all the calls to OpenGL, you could look for all the calls to "RenderScreen()" and replace it with your drawScreen() method. your drawScreen method would take the same screen data that RenderScreen used, but instead make Direct3D calls to draw the screen.

This applies to sound and input (replace the keybaord code with Xbox controller code).

If an application is using SDL as the library to draw the graphics, then that's one entire category you don't have to touch because lantus has provided the SDLx (SDL Xbox version). You would then only focus on the other categories.

This is my suggestion on how to proceed:
1) I STRONGLY reccomend the first step be compile it (and run it) on windows.
2) Then comment out all the input and sound code.
3) Since it uses SDL, ou can link to the SDLx libraries so you shouldn't have to change anything regarding the graphics.
4) Create the new Xbox application, link to the SDLx libraries, and compile it. This will generate the xbe.

So in theory, you should be able to compile and run Abuse on the Xbox without changing or writing one line of code (just commenting out any code that gives a compile error like Windows Code, DirectInput code, ect..).

5) After it is running on the Xbox, start looking at replacing the keyboard code with Xbox controller code.
6) When input is working, make any changes that need to be made to ge the sound working
7) That's it.

You do not have to be a coding master, but you should have a basic understanding of programming in C. For example, you know how all of this works:

variables (local, global)
loops (for, while)
data types (int, float, char)
arrays
functions (passing parameters, returning values, pass by reference)
pointers
structs
switch statements
if/else statements
how to write and read a text file (fopen, fprintf, fclose)
How to set a pixel color on a texture using Direct3D

Don't even begin the port until you understand all of these concepts. I reccomend learning them in the context of C (and porting apps written in C). That will make things a lot easier. There are lots of C tutorials on the net that cover all of these concepts.

Edited by nes6502, 26 June 2006 - 06:33 PM.


#5 Kamiyay

Kamiyay

    X-S Young Member

  • Members
  • Pip
  • 41 posts

Posted 26 June 2006 - 06:56 PM

Thanks for the indepth response!

QUOTE("nes6502")

variables (local, global)
loops (for, while)
data types (int, float, char)
arrays
functions (passing parameters, returning values, pass by reference)
pointers
structs
switch statements
if/else statements
how to write and read a text file (fopen, fprintf, fclose)
How to set a pixel color on a texture using Direct3D


I am familliar with about 98% of these things through my c++ class/book. I will be sure to research and follow tutorials in context to C before attempting anything.

Thanks!

#6 XDelusion

XDelusion

    X-S Hacker

  • Members
  • PipPipPipPipPipPip
  • 2,013 posts
  • Location:Your Location
  • Interests:DOOM, Star Wars (Books Comics), Natural Law.
  • Xbox Version:v1.1
  • 360 version:none

Posted 26 June 2006 - 09:39 PM

Good luck man!

#7 Kamiyay

Kamiyay

    X-S Young Member

  • Members
  • Pip
  • 41 posts

Posted 27 June 2006 - 06:08 PM

Just an update on where I am at:

Currently reading a bunch of C tutorials, I truely had no Idea how easy this stuff was!! (the one on Howstuffworks.com is awesome!!) I figure I should probably make something in C to get a better understanding of what it can do, before I go on with the port. (That and I still gotta try and get SDL down...)

This port will take a while fellas.

#8 Scoobysnaxx

Scoobysnaxx

    X-S Expert

  • Members
  • PipPipPip
  • 500 posts
  • Location:Canada EH!
  • Xbox Version:v1.6
  • 360 version:none

Posted 06 July 2006 - 03:34 AM

Xport just made a release for those you don't frequent his forum [lol as if anybody doesn't biggrin.gif]

LINK

#9 XaRaNn

XaRaNn

    X-S X-perience

  • Members
  • PipPip
  • 461 posts
  • Xbox Version:v1.1

Posted 06 July 2006 - 09:18 AM

QUOTE(Scoobysnaxx @ Jul 5 2006, 10:41 PM) View Post

Xport just made a release for those you don't frequent his forum [lol as if anybody doesn't biggrin.gif]

LINK


Lol, to me it sounds like xport already had it ported, but forgot to release it.
Saw the thread, went ouuppss, and here we go =]

#10 Kamiyay

Kamiyay

    X-S Young Member

  • Members
  • Pip
  • 41 posts

Posted 07 July 2006 - 03:14 AM

Meh, I guess I can call it quits. I tried Xports version (which I HIGHLY doubt I could do better than) and it works awesome. On to other projects...




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users