EDIT:
Download Sqrxz CE v1.0.0
Download Sqrxz World Editor v1.0.0 (for Windows)


I've had this on my to-do list for a while now, and seeing as I haven't made much progress with my other projects for a few months, I figured now is a good time. I contacted Jimmy Mardell who gave me his blessing, so I'm using the source code from his TI-86 version from 1998 (which in turn was an adaption of the Amiga/PC game) and adding/changing as required to suit the CE.

When finished, the game will play any of the TI-83(+)/85/86 worlds that people have created over the past 18 years. I'm using 16x16 tiles & sprites (taken from the PC version) to make a play screen of 240x128, plus status bars & information at the top/bottom of the screen.

The game will run any existing .8xp Sqrxz worlds, but I'll also be including a converter program to convert any .8xp, .83p or .86s worlds to .8xv app vars. That way, you can play any TI-83, TI-83+ or TI-86 worlds on your TI-84+CE and not clog up your programs list with the old .8xp files. I'm also considering writing a new level editor (for Windows).

Here's a quick screenshot. Not a whole lot happens yet, just shows the level and can scroll through. Many of the tile sprites are still missing (hence lots of junk on screen), but I'm working through those now.

Whoa this looks pretty rad! I rememeber playing the original game; this looks like a nice rendition. Keep up the good work! Smile
Looks awesome man! Runs really nice too Smile.

Is this coded in C or ASM?

(For some reason I was actually thinking about SQRXZ this morning ... strange!)
Thanks Smile It's coded in ASM. I'm using a lot of Jimmy's code & structure for how the game works, but modified to suit the CE.
Wow, this is really impressive! I definitely would like to see a complete SQRXZ for the TI-84 Plus CE, so let us know what we can do in terms of technical assistance, testing, or just being a cheering squad (I suspect the latter will be the most useful). Is this using a set of clipping sprite routines you put together for another of your TI-84 Plus CE games? Are you, as I slightly suspect, "clipping" by drawing full sprites at the edges and then putting a black rectangle over them?
It's a new routine I wrote a few days ago. I've gone over it a few times to optimise but could probably still be much better. It does actually clip by only drawing what it needs to. Currently it doesn't allow for any transparency, so it's only suitable for tile sprites.


Code:
;------------------------------------------------
; drawClippedSprite - draw a 16x16 8bpp sprite to a 240x128 window of vbuf (with clipping)
;   input:  HL => sprite
;           E = x position
;           D = y position
;   output: none
;------------------------------------------------
drawClippedSprite:
        ; y-clipping
        ld      a,d
        cp      -16
        jr      c,dcsCheckBottom
        ld      a,d
        neg
        ld      c,a
        ld      b,16                            ; 8 bytes of sprite data to skip per row clipped
        mlt     bc
        add     hl,bc
        ld      a,d
        add     a,16
        ld      d,0
        jr      dcsSetRows
dcsCheckBottom:
        ld      a,d
        cp      128-15
        ld      a,16
        jr      c,dcsSetRows
        ld      a,d
        sub     128
        ret     nc
        neg
dcsSetRows:
        ld      (__dcsRows),a
        ; x-clipping
        ld      a,e
        cp      -16
        jr      c,dcsCheckRight
        ld      a,e
        neg
        ld bc,0 \ ld c,a                        ; skip 1 byte per for each column clipped
        add     hl,bc
        ld      a,e
        add     a,16
        ld      e,0
        jr      dcsSetCols
dcsCheckRight:
        ld      a,e
        cp      240-15
        ld      a,16
        jr      c,dcsSetCols
        ld      a,e
        sub     240
        ret     nc
        neg
dcsSetCols:
        ld      (__dcsCols),a
        ; prepare to draw
        ex      de,hl                           ; DE => sprite, H = y position, L = x position
        ld bc,0 \ ld c,l
        ld      l,160
        mlt     hl
        add     hl,hl
        add     hl,bc
        ld      bc,(pVbufWin)
        add     hl,bc                           ; HL => location on vbuf
__dcsRows               = $+1
        ld      a,16
dcsRow:
        push    hl
        push    de
__dcsCols               = $+1
        ld      bc,16
        ex      de,hl
        ldir
        pop     hl
        ld      de,16
        add     hl,de
        ex      (sp),hl
        ld      de,320
        add     hl,de
        pop     de
        dec     a
        jr      nz,dcsRow
        ret


EDIT: I've added the rest of the tile sprites and the title image. There is still a little junk showing in levels, which is just the player & enemy spawn points.

Looking awesome man! The speed is very nice and the graphics are great!
I haven't done a whole lot over the last week (been too busy Xmas shopping and playing Minecraft), but here's a quick visual update. Just general movement testing, still no animations or enemies implemented.

Looks amazing, James_V! Amazing graphics! Smile
JamesV wrote:
I haven't done a whole lot over the last week (been too busy Xmas shopping and playing Minecraft), but here's a quick visual update. Just general movement testing, still no animations or enemies implemented.


It might be the screenshot misbehaving, but is there no transparency on the character? If so, do you intend to change that / have you just not gotten around to doing it yet?
Looking awesome and running smooth as a button!
mr womp womp wrote:
It might be the screenshot misbehaving, but is there no transparency on the character? If so, do you intend to change that / have you just not gotten around to doing it yet?
No you're right, no transparency on that screenshot. I hadn't written the proper sprite routine yet Razz

A little more progress (although I keep getting distracted on this Minecraft CTM map I've been playing for the last month or so), but Sqrxz transparency is now done as well as tile animations/changes, collecting items, etc. Also, the "time" and "air" bars are now there and working Smile

Looking great and seems to be running very smooth at present.

Have you noticed any diagonal line of goodness when testing on hardware?
Very nice work! I like the animations on tiles when you hit them Smile
This looks great!
This is looking great! What with Oiram coming out soon (right mateo? Razz), CE users shouldn't have any problem getting their platforming fix on the CE.
tr1p1ea wrote:
Looking great and seems to be running very smooth at present.

Have you noticed any diagonal line of goodness when testing on hardware?
Yeah the diagonal line shows up during full speed scrolling. Also the game runs a decent amount slower on hardware, which I'm sure I've encountered before with a previous project, but I can't remember the explanation/fix Shock
Could it be LCDBASE update timing? Or perhaps a wait-state thing?

How much slower do you estimate?
Yeah it looks like it's waiting an extra interrupt with the vram flip when running on hardware. It will be something simple I've missed in my main loop - I'll go over it and compare to the main loop of AB5, etc. and see if something obvious jumps out at me Smile
Enemies have now been added in - you can see the Blob and Hedgehog in the below screenshot.

  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 3
» All times are GMT - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement