Gp2x Coding Competition Results


BlackMac posted on Feb 27 2006 at 01:22 AM said:
Hey, miq01 You game is really cool. Hard as hell, but I like it. I was actually sure there was a bug that makes it impossible to beat level 1 ;) Looks like I was wrong :unsure:
Thanks, BlackMac! :)

deadlychicken22 posted on Feb 27 2006 at 01:36 AM said:
miq01: Ok, that makes sense (that is the same reason I don't have a pack file, instead I have about 60 images in a subfolder). I really like your game, I'm planning on making my own pack of songs (you can do that, right?).
Yes! I'd really like people to create song packs for it. Check the songpack folder and you'll see there's another folder inside, called "CCMIXTER" with 3 pairs of OGG and B2X files. B2X is the format I'm using to set the list of events for each song. It's not as hard as it seems to create a new one from scratch if you use a proper audio editing software. Looking at B2X files is quite self-explanatory, but I'll add some information on how to create them in the next version.

Next release is not going to include song packs, but they'll be distributed separately, and future releases (don't know when...) are probably going to accept StepMania file formats as well, so that anyone can use already created packs.
 
Last edited by a moderator:
Aninhumer posted on Feb 26 2006 at 03:24 PM said:
fomit posted on Feb 26 2006 at 12:20 PM said:
Aninhumer posted on Feb 26 2006 at 07:50 PM said:
Do you have a rom folder in the Gnuboy directory?
Just checking.

Yes.
I was asking DuFace

Yea, turns out. I didn't. I was using the root/roms/gameboy method which I guess doesn't work. Works awesome now though. Great work K-Teto!
 
Last edited by a moderator:
DuFace posted on Feb 27 2006 at 12:36 AM said:
Aninhumer posted on Feb 26 2006 at 03:24 PM said:
fomit posted on Feb 26 2006 at 12:20 PM said:
Aninhumer posted on Feb 26 2006 at 07:50 PM said:
Do you have a rom folder in the Gnuboy directory?
Just checking.

Yes.
I was asking DuFace

Yea, turns out. I didn't. I was using the root/roms/gameboy method which I guess doesn't work. Works awesome now though. Great work K-Teto!

it works, you have to hit select to get to the menu and tell it that you're using that.
 
Last edited by a moderator:
great work on all the entries

bubble train is a lot of fun. only thing is im not sure how the bubbletrain and everything gametypes differ from the easy, normal and hard game types.

vectar is really cool. game balance is not there yet which the author has already said but the basis is there for a great game. cant wait for the next release of this

gnuboy is a really good emulator except the sound is really crackly for me. it said the sound is perfect so im not sure why its so bad for mine. everything else is perfect though

openbor is perfect. i had trouble with sound on the normal bor ports but the openbor port works and sounds perfect plus the pak selector is very nice and easy to use.

Extraterrestres is really interesting. kind of like a horizontal falldown or one of those games similar to that. having the story mode and arcade mode is really cool. graphics are well done and i like the powerup system.

ladykiller as it has always been a lot of fun but volume control doesnt seem to work even though it was stated that volume control was added. besides that lots of fun as always just even better.

startrucker is a fun and well done space taxi clone. the little map definitely helps.

vanguard wars is a fun shooter. starts off easy then gets harder at a nice pace. having different modes is always a nice touch.

great work on all the entries including ones i havent tried yet or mentioned in this post. you guys are the ones who make me very happy to own a gp2x.
 
jbrodack posted on Feb 27 2006 at 07:29 AM said:
ladykiller as it has always been a lot of fun but volume control doesnt seem to work even though it was stated that volume control was added. besides that lots of fun as always just even better.

Volume control works, but only in "playing field" (while you control the diver).

Regards
 
Last edited by a moderator:
Dzz posted on Feb 26 2006 at 06:01 PM said:
GP General looks very promising but with the text being unreadable it's not really playable yet. If MiSaTo keeps working on it this will be a very popular game!
Yes, i'm still working on it... i'm trying to fix it because i didn't have enough time to fix it before the compo :)
Thanks, and enjoy it

PS: Also congratulations to the winners
 
Last edited by a moderator:
jbrodack posted on Feb 27 2006 at 06:29 AM said:
bubble train is a lot of fun. only thing is im not sure how the bubbletrain and everything gametypes differ from the easy, normal and hard game types.

Sorry, I suppose that this isn't explained well anywhere.

The "Bubble Train" game is just a fun little one to run through. It's just one level for each of the letters B, U, B, B, L, E, T, R, A, I, and N.

The "Everything" game runs through Easy, Normal, and then Hard levels in order.

If you really want to play and compare high scores, I suggest always using "Everything." Though, once you get good, it gets a little annoying to start out with the easy levels just to get to the harder ones. That's when you might want to start using Normal or Hard.

On a side note, has anyone beaten Everything level 30 (which I think is the last Normal level)? I have considered changing it somehow, as I think it's actually harder than the following levels.
 
Last edited by a moderator:
i am adicted to beat2x, you did an awesome job mig01! after about a million tried i can beat level one on normal just about every time now, average about 3000 points WOO! its a great game!
 
Candice Y posted on Feb 27 2006 at 11:31 PM said:
Big up 2 mah posse n all dat n Goitfights du u rekn i luk r8 fit in der

Learn some proper English man! <_<
 
Last edited by a moderator:
D.C. posted on Feb 27 2006 at 11:53 PM said:
Candice Y posted on Feb 27 2006 at 11:31 PM said:
Big up 2 mah posse n all dat n Goitfights du u rekn i luk r8 fit in der

Learn some proper English man! <_<
Gosh, that guy is such a "Goity".
 
Last edited by a moderator:
heh, i think im getting good at beat2x, best score so far is 7538! beat level one and 2 on normal and part of 3, cant wait for updates
 
triton posted on Feb 28 2006 at 12:13 AM said:
heh, i think im getting good at beat2x, best score so far is 7538! beat level one and 2 on normal and part of 3, cant wait for updates
I haven't tried it, is it that good.
Any chance for Dance mat support?
 
Last edited by a moderator:
thanks for the replies puck and flavor.

puck are you planning on making it able to change the volume at any time? would be nice when trying to not wake anyone up or be somewhat quiet.

flavor great work on bubble train. tough yet very fun game.
 
jbrodack posted on Feb 28 2006 at 12:18 AM said:
puck are you planning on making it able to change the volume at any time? would be nice when trying to not wake anyone up or be somewhat quiet.

Yes, that was my idea, but I didn't have enough time to include that as well as some fx sounds :(
 
Last edited by a moderator:
So, any chances to pot some over to the GP32?

Maybe I can port my entry Vanguard Wars, if the Gp32 Fenix runtime is fast enough. I doubt it, but if you want to give it a try, PM me and ill send you a test version.
 
Imerion posted on Feb 28 2006 at 12:01 AM said:
So, any chances to pot some over to the GP32?

Maybe I can port my entry Vanguard Wars, if the Gp32 Fenix runtime is fast enough. I doubt it, but if you want to give it a try, PM me and ill send you a test version.
Well, unless I'm much mistaken, fenix runs quicker on the gp32 than on the gp2x.

If someone would like to port Extraterrestres to the gp32, I would be glad to send them the source code, just keep in mind: this is my first real c/c++ project, the code isn't very good ;)
 
Last edited by a moderator:
Dzz posted on Feb 26 2006 at 06:01 PM said:
Thanks everybody for your kind comments about Vektar. I have a clear idea about what version 1.0 will actually be and I'll be releasing it shortly, depending on how long it takes me to solve certain technical problems. Most likely another two weeks or so.

Note that there is a bug in the competition version where if you play a second game without exiting first, you won't get free ships right away; I forgot to reset the "next free ship score" variable. Sorry about that; you need to exit and restart the program between games.

I thought there were a number of impressive entries:

BubbleTrain is great and a deserving victor.

Beat2X is a lot of fun!

I haven't seen much mention of Extraterrestres but I think it's a very solid and fun game; the artwork is really nice and the variety of options makes it interesting to keep playing.

Ladykiller has pretty interesting gameplay and is coded very well with a nice look.

Vanguard Wars gets pretty absorbing once you get the hang of it.

Radek's demo is very impressive. If he builds a game that makes good use of his blitting routines it could be really great.

I have to thank you for good words. Yet I'm not a good designer so I will rather not make any great games...
(your entry make me depressed for a while...)

However I will make a lib based on the concepts included in the demo (and more).
That was my original goal... I think the GP2x deserves to have more impressive 2D games as the hardware specs are great for it.

The competition motivates me to rush my project and make a demonstration of it.

That will not be replacement for SDL thought. My routines do work very differently than a normal blitting. Game have to be coded specially for them. However... that doesn't mean it's more difficult to use than the SDL. Actually it's far easier to scroll a playfield as you have to just change one pointer. The bandwitch cost to redraw the playfield is vastly reduced compared to SDL as well. If someone had an experience with machines like the Amiga he (or she ;) ) will be like in the home!

The best part is it wasn't using all capabilities of the cpu...
(significant improvemts in perfomance are possible)

So expect 2D games with 6-12 simultaneous playfields to be reality. :)
(and with effect such as transparency and zooming for evey playfield too!)
 
Last edited by a moderator:
Radek posted on Feb 28 2006 at 12:53 AM said:
So expect 2D games with 6-12 simultaneous playfields to be reality. :)
(and with effect such as transparency and zooming for evey playfield too!)

Could this be used in a SNES emu too?
 
Last edited by a moderator:
DaveC posted on Feb 28 2006 at 04:43 AM said:
Radek posted on Feb 28 2006 at 12:53 AM said:
So expect 2D games with 6-12 simultaneous playfields to be reality. :)
(and with effect such as transparency and zooming for evey playfield too!)

Could this be used in a SNES emu too?

It could in that sense my RGB color mixers are as fast possible as they can be (3 machine cycles are needed to add/sub two 16bbp pixels). In that sense yes - it could improve perfomance of snes emu. But to what extent that will depend on other factors too as an emu is doing much more than just screen refresh. In the snes not only the transparency is making problems but also object prorities (the order of drawing sprites must be decided), conversion to linear format for pixels, sound generations, etc.

I was looking at Squidge's snes source althought I could not comprehend it as whole I can say that he was right saying his emu isn't using most of cpu time for color add/sub. There is lots of logic code in that emu and the way it works might not make a bigger difference with my routiness. Most of it would to be rewritten probably - it does like the Sq's snes is trying to parse snes's hardware smartly where with my aproach it should be done by brute force paradoxically.

Anyway there are my RGB mixing functions:
Code:
inline int RGB16bppLineAdd(unsigned short int *fb, unsigned short int *source1, unsigned short int *source2)
{
    unsigned int *d, *s1, *s2;
    unsigned int x3;

    d = (unsigned int *)fb;
    s1 = (unsigned int *)source1;
    s2 = (unsigned int *)source2;

    //x3 = 0xF7DEF7DE;
    x3 = 0x7BEF7BEF;

    /*
     * Rejestry:
     * r4 - dest
     * r5, r6 - s1 i s2 pointers
     * r7 - max value
     * r8 - maska
     * r0-r3 - dane dla s1
     * r9-r12 - dane dla s2
     */
    asm
    (
        "stmfd r13!, {r8-r12}\n" // zapisz rejestry

        "mov r4, %0\n"      // załaduj wskaźnik dest
        "mov r5, %1\n"      // załaduj wskaźnik source1
        "mov r6, %2\n"      // załaduj wskaźnik source2
        "add r7, r0, #640\n"     // wielkość pamięci z bitmapami
        "mov r8, %3\n"      // załaduj maskę

        "loop50:\n"

        "ldmia r5!, {r0, r1, r2, r3}\n" // załaduj piksele s1
        "ldmia r6!, {r9, r10, r11, r12}\n" // załaduj piksele s2

        "and r0, r8, r0, lsr #1\n"
        "and r1, r8, r1, lsr #1\n"
        "and r2, r8, r2, lsr #1\n"
        "and r3, r8, r3, lsr #1\n"
        "and r9, r8, r9, lsr #1\n"
        "and r10, r8, r10, lsr #1\n"
        "and r11, r8, r11, lsr #1\n"
        "and r12, r8, r12, lsr #1\n"

        "add r0, r0, r9\n"
        "add r1, r1, r10\n"
        "add r2, r2, r11\n"
        "add r3, r3, r12\n"
        
        "stmia r4!, {r0, r1, r2, r3}\n"     // zapisanie gotowych pikseli
        "cmp r4, r7\n"
        "blt loop50\n"

        "ldmfd r13!, {r8-r12}\n"    // przywróc rejestry
        :
        : "r"(d), "r"(s1), "r"(s2), "r"(x3)
        :  "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7"
    );
    return(0);
}

// Mikser korzystający z odejmowania według wzoru (A + C) - B gdzie C jest
// dodane by wynik mieścił się w dostępnym zakresie liczb.
inline int RGB16bppLineSub(unsigned short int *fb, unsigned short int *source1, unsigned short int *source2)
{
    unsigned int *d, *s1, *s2;
    unsigned int x3, x4;

    d = (unsigned int *)fb;
    s1 = (unsigned int *)source1;
    s2 = (unsigned int *)source2;

    //x3 = 0xF7DEF7DE;
    x3 = 0x84108410;    // dla s1
    x4 = 0x7BEF7BEF;    // dla s2

    /*
     * Rejestry:
     * r4 - dest
     * r5, r6 - s1 i s2 pointers
     * r7 - max value
     * r8 - maska
     * r0-r3 - dane dla s1
     * r9-r12 - dane dla s2
     */
    asm
    (
        "stmfd r13!, {r8-r12, r14}\n" // zapisz rejestry

        "mov r4, %0\n"      // załaduj wskaźnik dest
        "mov r5, %1\n"      // załaduj wskaźnik source1
        "mov r6, %2\n"      // załaduj wskaźnik source2
        "mov r7, %4\n"     // załaduj drugą maskę
        "mov r8, %3\n"      // załaduj maskę
        "mov r14, r7\n"
        "add r7, r0, #640\n"     // wielkość pamięci z bitmapami

        "loop60:\n"

        "ldmfd r5!, {r0, r1, r2, r3}\n" // załaduj piksele s1
        "ldmfd r6!, {r9, r10, r11, r12}\n" // załaduj piksele s2

        "orr r0, r8, r0, lsr #1\n"
        "orr r1, r8, r1, lsr #1\n"
        "orr r2, r8, r2, lsr #1\n"
        "orr r3, r8, r3, lsr #1\n"

        "and r9, r14, r9, lsr #1\n"
        "and r10, r14, r10, lsr #1\n"
        "and r11, r14, r11, lsr #1\n"
        "and r12, r14, r12, lsr #1\n"

        "sub r0, r0, r9\n"
        "sub r1, r1, r10\n"
        "sub r2, r2, r11\n"
        "sub r3, r3, r12\n"

        "stmea r4!, {r0, r1, r2, r3}\n"     // zapisanie gotowych pikseli
        "cmp r4, r7\n"
        "blt loop60\n"

        "ldmfd r13!, {r8-r12, r14}\n"    // przywróc rejestry
        :
        : "r"(d), "r"(s1), "r"(s2), "r"(x3), "r"(x4)
        :  "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7"
    );
    return(0);
}
 
Last edited by a moderator:
triton posted on Feb 28 2006 at 01:13 AM said:
heh, i think im getting good at beat2x, best score so far is 7538! beat level one and 2 on normal and part of 3, cant wait for updates
:) I'll release an updated version very soon. And separately I'll release a new song pack made of 5 songs.

lhnz posted on Feb 28 2006 at 01:17 AM said:
I haven't tried it, is it that good.
Any chance for Dance mat support?
Really good, but my opinion doesn't count as I programmed it... :D

There is no dance mat support (and I don't think it would make much sense).
 
Last edited by a moderator:
Back
Top