Author Topic: Pacman in Axe  (Read 5230 times)

0 Members and 1 Guest are viewing this topic.

Offline Michael.3545

  • LV3 Member (Next: 100)
  • ***
  • Posts: 69
  • Rating: +13/-7
    • View Profile
Pacman in Axe
« on: October 18, 2010, 06:39:14 pm »
So, a while ago I was on ticalc.org, and I downloaded this file.  I was impressed by the game, but there were some parts of it that I didn't like.  I said to myself, "you should use Axe to make an awesome version of this."  So I got started.  The only thing left to do is add a control system for the ghosts.

I have to say my favorite part is wrapping from one side to the other.



Well, that's what I have been up to recently.

The source and executable can be found here:
http://www.box.net/shared/q7n2g5avh1

If anyone is interested in making levels, I can edit in some more information on that.

Offline ztrumpet

  • The Rarely Active One
  • CoT Emeritus
  • LV13 Extreme Addict (Next: 9001)
  • *
  • Posts: 5712
  • Rating: +364/-4
  • If you see this, send me a PM. Just for fun.
    • View Profile
Re: Pacman in Axe
« Reply #1 on: October 18, 2010, 06:42:28 pm »
Nice. :)  The funny thing, is that program was written by Quigibo, the author of Axe. :P
Good luck on it. :)

Offline Michael.3545

  • LV3 Member (Next: 100)
  • ***
  • Posts: 69
  • Rating: +13/-7
    • View Profile
Re: Pacman in Axe
« Reply #2 on: October 18, 2010, 06:44:19 pm »
Uh-oh, shh!

But seriously.  I didn't even notice that.

Offline Deep Toaster

  • So much to do, so much time, so little motivation
  • Administrator
  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 8217
  • Rating: +758/-15
    • View Profile
    • ClrHome
Re: Pacman in Axe
« Reply #3 on: October 18, 2010, 06:56:35 pm »
Nice. What about a direct port?




Offline Michael.3545

  • LV3 Member (Next: 100)
  • ***
  • Posts: 69
  • Rating: +13/-7
    • View Profile
Re: Pacman in Axe
« Reply #4 on: October 18, 2010, 07:13:10 pm »
By port, do you mean adapting the original Pac-Man game's code to axe?

Offline Deep Toaster

  • So much to do, so much time, so little motivation
  • Administrator
  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 8217
  • Rating: +758/-15
    • View Profile
    • ClrHome
Re: Pacman in Axe
« Reply #5 on: October 18, 2010, 07:14:11 pm »
Whoops, I meant "clone." Sorry, got them mixed up :-[
« Last Edit: October 18, 2010, 07:14:29 pm by Deep Thought »




Offline Michael.3545

  • LV3 Member (Next: 100)
  • ***
  • Posts: 69
  • Rating: +13/-7
    • View Profile
Re: Pacman in Axe
« Reply #6 on: October 18, 2010, 07:16:23 pm »
I can't make them exactly the same because of the screen size.  Plus I don't want to make this scroll.

Offline yunhua98

  • You won't this read sentence right.
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2718
  • Rating: +214/-12
  • Go take a dive in the River Lethe.
    • View Profile
Re: Pacman in Axe
« Reply #7 on: October 18, 2010, 07:59:20 pm »
nice job!  but didn't Quigibo make that program with Axe?  i thought he did when I downloaded.  ;)

Spoiler For =====My Projects=====:
Minor setback due to code messing up.  On hold for Contest.
<hr>
On hold for Contest.


Spoiler For ===Staff Memberships===:






Have you seen any good news-worthy programs/events?  If so, PM me with an article to be included in the next issue of CGPN!
The Game is only a demo, the code that allows one to win hasn't been done.
To paraphrase Oedipus, Hamlet, Lear, and all those guys, "I wish I had known this some time ago."
Signature Last Updated: 12/26/11
<hr>

Offline Deep Toaster

  • So much to do, so much time, so little motivation
  • Administrator
  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 8217
  • Rating: +758/-15
    • View Profile
    • ClrHome
Re: Pacman in Axe
« Reply #8 on: October 18, 2010, 08:30:10 pm »
Nope, it's pure ASM.

And wow, that was made by Quigibo? I never realized, even though I played it two years ago...




Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Pacman in Axe
« Reply #9 on: October 18, 2010, 08:31:54 pm »
Wow awesome! It looks very great! I also remember an older port released in 1999-2000 but it had scrolling.
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

Offline Michael.3545

  • LV3 Member (Next: 100)
  • ***
  • Posts: 69
  • Rating: +13/-7
    • View Profile
Re: Pacman in Axe
« Reply #10 on: October 24, 2010, 01:15:05 am »
Here is an update on my progress, for anyone interested.

Completed:
  • Added support for multiple levels
  • Changed format of level data for maximum compression
  • Made two more levels
  • Fixed a bug with the warp tunnel
  • Fixed a bug with losing lifes after winning a level
  • Fixed some major issues with collision testing
  • Set up an appvar
  • Made making levels much easier through a BASIC program (uses Omnicalc)

To do:
  • Add a control system for the ghosts.
  • Create a game over screen
  • Add high score saving

Things I am considering doing:
  • Make turning easier
  • Display score during gameplay
  • Make main menu nicer looking (perhaps even with grayscale?)

Here is a (really long) screenie showing me eating lots of dots in the new levels.  Near the end I mess with the new, more lenient collision testing.


EDIT:
Attached prog, source and level creation program.

EDIT 2:
Removed spoiler from around code.  Too much code at once is better than no code at all.

Code: (Source) [Select]
:.AAPACMAN A fun arcade game
:DiagnosticOff
:
:
:.appvar
:Lbl AV
:"vPac-Man"→Str1
:
:.only if exist
:UnarchiveStr1
:
:.exists? if notmake
:!If GetCalc(Str1)→O
:
: .create, ret  if < RAM
: Return!If GetCalc(Str1,2)→O
:End
:
:.wrong size
:If {O-2}r≠2
: DelVar Str1
: Goto AV
:End
:
:.SPRITES:
:.CLOSED
:[387CFEFEFE7C3800]→Pic0
:.UP
:[82C6EEFEFE7C3800]→Pic1
:.RIGHT
:[3E7CF8F0F87C3E00]→Pic2
:.LEFT
:[F87C3E1E3E7CF800]→Pic3
:.DOWN
:[387CFEFEEEC68200]→Pic4
:.DOT
:[0000102810000000]→Pic5
:.LIFE
:[70E0C0E070000000]→Pic6
:.GHOST
:[387CD6FEFEFEAA00]→Pic7
:
:
:.no. of maps:
:3→θ
:.MAP DATA
:[FFFC006B6B1B120246C6B6B001FFF811B1B7171001F00FFFFC006F7B1112224446F7B001FFF8631767B70F0F0F0FFFFC446AAB4452FA5116AAB111FFF83491B4971001100F]→GDB1
:
:.TEXT DRAWN TO BUFFER
:Fix 5
:
:
:.MAIN MENU
:Lbl MM
:ClrDraw
:Fix 1
:Text(27,0,"PAC-MAN")
:Fix 0
:ref(0,8,96,1)
:Text(1,10,"By Michael Ripley")
:
:21→A
:Text(4,A,"2ND - Start")
:Text(4,A+7,"MODE - Quit")
:L1→P
:
:DispGraph
:
:While getKey(0)
:Pause 5
:End
:Repeat getKey(54)
: If getKey(15) or getKey(55)
:  Goto EX
: End
:End
:
:.START GAME
:Lbl SG
:
:.init vars
:0→M→S+3→L
:
:
:.NEXT MAP
:Lbl NM
:
:
:.Load map data
:For(I,0,116)
: {M*23+(I/8)+GDB1}e(I^8)*2→iPart(L1*2+I+20}
:End
:
:
:.Draw map
:0→N
:ClrDrawr
:For(B,0,8)
: For(A,0,12)
:  iPart(B*13+A+(L1*2)+20}→P
:  If P=2
:   ref(A*7,B*7,7,7)r
:  End
:  If P=0
:   N+1→N
:   Pt-On(A*7,B*7,Pic5)r
:  End
: End
:End
:
:
:.RESET
:Lbl RS
:
:
:.G-pos
:0→{L1}
:
:.G-dir
:conj(M*23+GDB1+20,L1+1,3)
:
:.G-pos
:For(I,0,5)
: iPart(M*23+GDB1+16*2+I}*7→{L1+I+4}
:End
:
:.reset vars
:0→E→F+1→C→Q→Z
:
:.P-pos
:M*23+GDB1+15*2→P
:iPart(P}*7→X
:iPart(P+1}*7→Y
:
:.P-dir
:M*23+GDB1+19*2→P
:iPart(P}→G
:iPart(P+1}→H
:If G=15
: ‾1→G
:ElseIf H=15
: ‾1→H
:End
:If H=‾1
: 1→D
:ElseIf G=1
: 2→D
:ElseIf G=‾1
: 3→D
:Else
: 4→D
:End
:
:sub(RD,1)
:sub(DW)
:Pause 1000
:
:.MAIN LOOP
:Repeat getKey(55) or F
:
: .KEY PRESSES
: If getKey(1)
:  !If pxl-Test(X,Y+7)r+pxl-Test(X+6,Y+7)r
:   0→G+1→H+3→D
:  End
: End
: If getKey(2)
:  !If pxl-Test(X-1,Y)r+pxl-Test(X-1,Y+6)r
:   ‾1→G+1→H+3→D
:  End
: End
: If getKey(3)
:  !If pxl-Test(X+7,Y)r+pxl-Test(X+7,Y+6)r
:   0→H+1→G+1→D
:  End
: End
: If getKey(4)
:  !If pxl-Test(X,Y-1)r+pxl-Test(X+6,Y-1)r
:   ‾1→H+1→G+1→D
:  End
: End
:
: .MOVE
: DS<(Z,2)
: X+G→A
: Y+H→B
: !If pxl-Test(A,B)r+pxl-Test(A+6,B)r+pxl-Test(A,B+6)r+pxl-Test(A+6,B+6)r
:   A→X
:   B→Y
:   If X=91
:    0→X
:   ElseIf X=‾1
:    90→X
:   End
:   If X>84
:    X-91→E
:   Else
:    0→E
:   End
:  End
:
:  .MOVE GHOSTS
:  ............
:  For(I,0,2)
:   .gXp, gYp
:   I*2+L1+4→A+1→B
:   L1+1*2+(I*2)→U+1→V
:   iPart(U}→U
:   iPart(V}→V
:   If U=15
:    ‾1→U
:   ElseIf V=15
:    ‾1→V
:   End
:
:
:   .INSERT BRAIN HERE
:   .!If X^7 or (Y^7)
:   .End
:
:   {A}+U→{A}
:   {B}+V→{B}
:
:   .coll test
:   If N
:    If {A}-5≤X and ({A}+5≥X)
:     If {B}-5≤Y and ({B}+5≥Y)
:      1→F
:      L-1→L
:     End
:    End
:   End
:  End
: End
:
:
: .WOKKA WOKKA
: DS<(Q,10)
:  C=0→C
: End
:
: sub(RD,0)
: sub(DW)
:End
:
:If F=2
: M+1→M
: .map loopback
: If M=θ
:  0→M
: End
: Goto NM
:End
:
:If F=1
: Fix 3
: Text(10,0,"You have died")
: Fix 2
: DispGraph
: Repeat getKey(54)
: End
: Goto RS
:End
:
:.if F=0, then:
:Goto MM
:
:
:.EXIT
:Lbl EX
:Fix 4
:ClrHome
:While getKey(0)
:Pause 5
:End
:Return
:
:
:.remove dot
:Lbl RD
:!If X^7 or (Y^7)
: X/7→A
: Y/7→B
: B*13+A+(L1*2)+20→P
: !If iPart(P}
:  N-1→N
:  !If N
:   2→F
:  End
:  !If r1
:   S+1→S
:  End
:  1→iPart(P}
:  Pxl-Off(X+3,Y+2)r
:  Pxl-Off(X+2,Y+3)r
:  Pxl-Off(X+4,Y+3)r
:  Pxl-Off(X+3,Y+4)r
: End
:End
:Return
:
:
:.DRAW
:Lbl DW
:ClrDraw
:RecallPic
:
:
:.ghost
:For(I,0,2)
: I*2+L1+4→P
: Pt-On({P},{P+1},Pic7)
:End
:
:Pt-On(X,Y,C*D*8+Pic0)
:If E
: Pt-On(E,Y,C*D*8+Pic0)
:End
:If L>>0
: For(P,0,L-1)
:  Pt-On(92,P*6,Pic6)
: End
:Else
: If L=‾1
:  3→F
: End
:End
:ref(91,28,5,7)
:rref(91,28,5,7)
:DispGraph
« Last Edit: October 25, 2010, 08:43:59 am by Michael.3545 »

Offline shmibs

  • しらす丼
  • Administrator
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2132
  • Rating: +281/-3
  • try to be ok, ok?
    • View Profile
    • shmibbles.me
Re: Pacman in Axe
« Reply #11 on: October 24, 2010, 01:21:29 am »
ooh, this looks very nice. (especially the warp wrap-around) i haven't tried it out, but if turning is difficult it should register if a directional key is pressed and then wait until either the character can turn in the designated direction or until another key is pressed before the player has to do anything else. gray all throughout would also look nice and might make the ghosts stand out a bit more(i like how they were programmed, btw. very inventive).
props all around!

Offline Michael.3545

  • LV3 Member (Next: 100)
  • ***
  • Posts: 69
  • Rating: +13/-7
    • View Profile
Re: Pacman in Axe
« Reply #12 on: October 24, 2010, 01:35:06 am »
Unfortunately, because of an optimization I used, I can't use grayscale in the game loop.  (The backbuffer is taken)

BTW, any ideas on a routine for controlling the ghosts are appreciated.  :)

EDIT:
Also, how do I display any input I get using the input command? 
Quote from: Commands List
Don't forget, its a string of tokens, not characters.
I am confused by that.  Thanks!
« Last Edit: October 24, 2010, 01:39:53 am by Michael.3545 »

Offline Runer112

  • Moderator
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2289
  • Rating: +639/-31
    • View Profile
Re: Pacman in Axe
« Reply #13 on: October 24, 2010, 01:56:18 am »
This.

EDIT: Wow, really? Thumbing me down for jokingly pointing out a bug in Chrome? Maybe the omnimaga community is worse than I had thought...

EDIT 2: Well it seems that my comment was poorly worded and off-topic, so it wasn't taken well. Which I guess is my fault. I won't delete my previous edit so others can see it if they like, but it's my rash overreaction to my poor attempt at humor being negatively received. I don't hate the omnimaga community... I'm not neutral towards the omnimaga community... I don't like the omnimaga community... I love the omnimaga community. It's the site I spend the majority of my time online at, it's the site I spend the majority of my time reading, and it's the site I spend the majority of my time producing content for. If omnimaga disappeared I don't know what I would ever do, because it has become a core facet of my life. And I'm sorry for ever having said otherwise.

I'm not sure what else to write, I think that's about it. Sorry.
« Last Edit: October 24, 2010, 03:14:25 am by Runer112 »

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Pacman in Axe
« Reply #14 on: October 24, 2010, 02:06:36 am »
Runer112 people are free to use CODE tags in spoilers if they want (although I don't see why it's that necessary since guests can open them anyway). In Opera not doing so stretches the page like crazy when there's data inside code anyway and those users aren't complaining. Maybe you could fix the spoiler tag mod for SMF? http://custom.simplemachines.org/mods/index.php?mod=195

Plus this was totally off-topic anyway.

Anyway The game looks nice so far and I hope you finish it.

EDIT: I saw your first edit but thank you for your 2nd one. Personally I am starting to question the legitimability of my position at Omnimaga.
« Last Edit: October 24, 2010, 03:19:46 am by DJ Omnimaga »
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)