-->
Side Scroller
-->
-->
Welcome,
Guest
. Please
login
or
register
.
Did you miss your
activation email
?
1 Hour
1 Day
1 Week
1 Month
Forever
Login with username, password and session length
-->
Home
About
Team
Rules
Stats
Status
Sitemap
Chat
Downloads
Forum
News
Our Projects
Major Community Projects
Recent Posts
Unread Posts
Replies
Tools
SourceCoder3
Other Things...
Omnimaga Radio
TI-83 Plus ASM File Unsquisher
Z80 Conversion Tools
IES TI File Editor
Free RAM areas
Comprehensive Getkeyr table
URL Shortener
Online Axe Tilemap Editor
Help
Contact Us
Change Request
Report Issue/Bug
Team
Articles
Members
View the memberlist
Search For Members
Buddies
Login
Register
Omnimaga
»
Forum
»
Calculator Community
»
Casio Calculators
»
Side Scroller
« previous
next »
Print
Pages: [
1
]
Go Down
Author
Topic: Side Scroller (Read 10023 times)
0 Members and 1 Guest are viewing this topic.
kucalc
Guest
Side Scroller
«
on:
January 31, 2007, 01:39:00 pm »
Hello, I'm wandering if someone can help me. I'm planning on writing the first side-scroller for the Casio fx-9860. Here's what I have:
* My levels are drawn using tiles (8x8 pixels) and the screen resolution is 128x64. The levels are stored within matrices, ex: mat_a[y]
.
* Since level data are stored within a matrix, how would I keep track of the player's position? Also, how do I "scroll" along a level? Would it be if the player's character reaches halfway across the screen would I increment the x-position?
* Last, how would I draw the level, which is stored using matrices, when scrolling? This is really complicated for me, as I want to scroll pixel-by-pixel instead of block-by-block.
Logged
trevmeister66
LV9
Veteran (Next: 1337)
Posts: 1009
Rating: +14/-5
Side Scroller
«
Reply #1 on:
January 31, 2007, 01:44:00 pm »
hmm well, i don't know casio language at all, but someone else could put it into a TI BASIC language thing first and could explain it to you that way i guess.
Logged
Projects: nameless RPG: 1.0% |
Reverse Snake v1.5:
100% | Secret Project: 5% | DUNGEON: 70%
My
MW2 Blog
<-- Please visit
kucalc
Guest
Side Scroller
«
Reply #2 on:
January 31, 2007, 02:05:00 pm »
Psuedo code would be helpful. Also, you can program the fx-9860 in Standard C (most of the standard C functions are supported) + some hardware functions.
Logged
Floodkiller
Guest
Side Scroller
«
Reply #3 on:
February 01, 2007, 05:34:00 am »
Well, I know the forumulas you can do (without language info or var info) using a sidescoller that I have:
(position of character in matrix)-((position of character on screen)+(offset of variable according to matrix; this is only to simplify variable counting)) stored into your scrolling variable.
The above is for a block scrolling, however, so you may have to adjust it to a pixel by pixel.
Logged
kucalc
Guest
Side Scroller
«
Reply #4 on:
February 03, 2007, 06:49:00 am »
Thanks Floodkiller, that does help a bit.
Logged
kucalc
Guest
Side Scroller
«
Reply #5 on:
February 22, 2007, 07:10:00 pm »
Ok, I'm back and I really need some help. I found a good scrolling algorithm from here:
http://greggman.com/headlines/2000/200-1-19g.htm
I have been successfully able to use the source code in my game and the scrolling works perfectly. Now, what I want to do is give my tiles attributes, like if my character is on top of the ground tile, Y-coordinate of the player stays the same. How do I do this? Can someone give show my an example source code? Thanks in advance and I appreciate it.
Logged
tifreak
LV11
Super Veteran (Next: 3000)
Posts: 2708
Rating: +82/-3
My Kung Fu IS strong...
Side Scroller
«
Reply #6 on:
February 23, 2007, 02:33:00 am »
I am glad that you were able to get it figured out.
I am sorry that we were unable to help, but it seems our C guys have not been on omnimaga for a few days.
Logged
Projects: AOD Series: 75% | FFME: 80% | Pokemon: 18% | RPGSK: 60% | Star Trek: 70% | Star Trek 83+: 40% | TI-City: 5%
bfr
LV8
Addict (Next: 1000)
Posts: 819
Rating: +4/-0
Side Scroller
«
Reply #7 on:
February 23, 2007, 12:14:00 pm »
Well, there are a few ways to do this. Here's an example of how I test for collision in Omnimaga - The RPG:
if(map_base[(unsigned int)(y+48)/16][(unsigned int)(x+64)/16]==22){
//...code...
}
While that code might not even be "proper" and my weird integer conversion thing might not even be supposed to work, it works, and it works well. I have it so that the character is always in the middle of the screen, and the tiles are 16x16, so that's what the numbers are for. map_base is the matrix/2-D array that contains the data for the map. 22 is the number/ID for the tile I'm testing for. I have 48 and 64 are the coordinates for the initial starting position of the character, since x and y start as 0, even when the character is on the tile located at (64,48).
Although maybe I could have explained it better, I hope it helps.
Logged
bfr's website -
http://bfr.tifreakware.net
kucalc
Guest
Side Scroller
«
Reply #8 on:
February 23, 2007, 03:53:00 pm »
Thanks bfr. Is there any side scrolling tutorial out there on the web? If not, than it seems I have to read this book I found in the garage: Action Arcade Adventure kit. It seems pretty good for developing side scrollers.
Logged
Print
Pages: [
1
]
Go Up
« previous
next »
Omnimaga
»
Forum
»
Calculator Community
»
Casio Calculators
»
Side Scroller
\n\t\t\t\t\t\t\t\t\t
<' + '/div>\n\t\t\t\t\t\t\t\t\t
%body%<' + '/textarea>
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
Max characters: 20000; characters remaining:
...<' + '/span><' + '/span>
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t<' + '/div>\n\t\t\t\t\t\t\t\t<' + '/div>', sTemplateSubjectEdit: '
', sTemplateBodyNormal: '%body%', sTemplateSubjectNormal: '
%subject%<' + '/a>', sTemplateTopSubject: 'Topic: %subject% (Read 10023 times)', sErrorBorderStyle: '1px solid red' }); aJumpTo[aJumpTo.length] = new JumpTo({ sContainerId: "display_jump_to", sJumpToTemplate: "
Jump to:<" + "/label> %dropdown_list%", iCurBoardId: 166, iCurBoardChildLevel: 0, sCurBoardName: "Casio Calculators", sBoardChildLevelIndicator: "==", sBoardPrefix: "=> ", sCatSeparator: "-----------------------------", sCatPrefix: "", sGoButtonLabel: "go" }); aIconLists[aIconLists.length] = new IconList({ sBackReference: "aIconLists[" + aIconLists.length + "]", sIconIdPrefix: "msg_icon_", sScriptUrl: smf_scripturl, bShowModify: true, iBoardId: 166, iTopicId: 1976, sSessionId: "02f755dc3a7ed94264c9d25bd1cdffef", sSessionVar: "ac5d20f71a4", sLabelIconList: "Message Icon", sBoxBackground: "transparent", sBoxBackgroundHover: "#ffffff", iBoxBorderWidthHover: 1, sBoxBorderColorHover: "#adadad" , sContainerBackground: "#ffffff", sContainerBorder: "1px solid #adadad", sItemBorder: "1px solid #ffffff", sItemBorderHover: "1px dotted gray", sItemBackground: "transparent", sItemBackgroundHover: "#e0e0f0" }); } function tick2() { if (typeof(document.forms.quickModForm) != "undefined") { calcCharLeft2(); setTimeout("tick2()", 1000); } else setTimeout("tick2()", 800); } function message_onkeyup() { if (typeof(document.forms.quickModForm) != "undefined" && typeof(document.forms.quickModForm.message) != "undefined") { document.forms.quickModForm.message.onkeyup = function onkeyup(event) { storeCaret(this); calcCharLeft2(); }; } else setTimeout("message_onkeyup()", 800); } message_onkeyup(); function calcCharLeft2() { var maxLength = 20000; var oldEditor = "", currentEditor = document.forms.quickModForm.message.value; if (!document.getElementById("editorLeft2")) return; if (oldEditor != currentEditor) { oldEditor = currentEditor; if (currentEditor.replace(/\r/, "").length > maxLength) document.forms.quickModForm.message.value = currentEditor.replace(/\r/, "").substring(0, maxLength); currentEditor = document.forms.quickModForm.message.value.replace(/\r/, ""); } setInnerHTML(document.getElementById("editorLeft2"), maxLength - currentEditor.length); } // ]]>-->