Forums

Topic: Petit Computer

Posts 6,461 to 6,480 of 9,620

Pixelrobin

Its really been a mystery to me, what is Petit Developer in a nutshell? From what I've seen its pretty much Gamemaker without D&D (Who uses D&D anymore?)

Everybody do a chirp. CHIRP.

3DS Friend Code: 3007-9228-5126

randomous

@Bluerobin2 Wow, I almost had a heart attack! I read "yen" as "euro" for some dumb reason, and nearly fell out of my chair at the thought 19,800 euros. Then I realized that's only 200 dollars, which isn't quite as much.

Oy, does anybody like these? I'm thinking about making it in Petit Computer:

Untitled

Edited on by randomous

randomous

randomous

I'm sure @Discostew has already thought of this (probably ages ago too), and I'm sure others have as well, but I just thought of it myself and thought I'd share.

I've made a program that shows how to animate all BG tiles that take on a certain value. For instance, if you're making an RPG and you've got some SCR file with water or torches in it, you can call some of the functions I've made in the program below and all torch/water tiles will animate according to the information you provide (as long as you've drawn the animation). The cool part is that no matter how many instances of the tile are currently on the BG, the animation will take the same impact on time. The animation will use the BGs directly next to the base BG, just like animated sprites.

It works by reading in the tile information (using CHRREAD) for the BG tiles you specify to animate, as well as the frames that follow (according to your specification). It then goes through and updates the base BG tile (using CHRSET) whenever it realizes that it's reached the time limit for that particular animation.

In order to use it yourself, just get rid of the "DEMO" section, but include all the rest of the code in your project. Make sure that any BG tile you want to animate is followed by the animation frames (just like a sprite sheet animation). Figure out which BG tiles you'd like to animate, then stick their IDs in the "BGCHR" data section (get rid of the old data). Make sure you put a -1 after the last ID, this is important! Next, figure out how many frames you'd like the BG tiles to animate through, and put that in the "BGFRAME" section. Finally, decide how much time you'd like between each frame and put it in the "BGTIME" section. This is all the same data you'd use to animate sprites and such.

Let's look at an example. In the demo program provided, BGCHR has the following data:
40,520,-1

This means that we want BG tile 40 and 520 to be animated (whenever they appear, no matter what). The -1 specifies the end of the data section. Next, we've got BGFRAME:
3,4

Notice there's no -1 here; you don't need -1 on any data section unless it's BGCHR (it's just a semantic I chose). These numbers mean that BG tile 40 will have 3 frames of animation, while BG tile 520 will have 4. Finally, BGTIME:
15,4

This means that BG tile 40 will change frames once every 15 game frames, or VSYNC 1's. BG tile 520 will change frames once every 4 game frames.

If you need help with it, or just don't understand what this is all about, please let me know!

Untitled

Edited on by randomous

randomous

Slayer

Pootrick2 wrote:

Bluerobin2 wrote:

@Pootrick2 You can port the original logo to PTC with PTCUtilities. There was no need to draw it by hand.

And now you tell me im not using a computer to post can you do it with an ipad?

Surface RT. Oh yeah.

I have nothing really to say about myself.

Discostew

@randomous

Yep, it's very much the same concept as palette animation, except rather than changing colors, you're changing the base tiles themselves. This allows not just regular tile animation (like ticking clocks, torches on the wall, etc), but can also generate fake parallax scrolling on a single layer, much like Sword Master on the NES does.

Look at the mountains in the back of the first level (or pretty much any level that looks like it uses more than one BG layer). Unlike the ground area and the HUD on the top that are handled by adjusting the BG position on separate scanlines, the mountains look like they are on a separate layer, but the reality is the NES only has one BG layer to work with, so they pulled it off by using tile animation that represents mountains scrolling in one direction.

Edited on by Discostew

Discostew

3DS Friend Code: 4425-1477-0127 | Nintendo Network ID: Discostew

Pootrick2

Hansausage wrote:

Woot! Duck Hunt PTC sorry for late release as some things come up.... any way here ya go
http://petitcomputer.wikia.com/wiki/Duck_Hunt_PTC
@Pootric2 Can i join the Ledgend of Zelda team? I am great with sprites touchscreen commands and pretty much anything you need help with

Yes you may

Edited on by Pootrick2

I LOVE petit computer AND anything Zelda/Minecraft related (i own all zelda games)

3DS FC=0919-9700-5328

3DS Friend Code: 0919-9700-5328 | Nintendo Network ID: Pootrick2 | Twitter:

Gimmemorecoinz

Wow I've been missing alot. I have some unfortunate news. I'm losing internet. Pretty well today or tonight. Don't know when. Unless, that bill gets paid. Ugh. So. I'll be online but not as frequently. Unless our neighboors lend me theirs. Details aside. I'm still working on petit smash.
@Discostew Maybe you can help me! In your tilemap demo, how would I go about getting the screen X and Y of specific tiles?
I need to know this so that I have tile X1, Tile Y1, Tile X2, and Tile Y2, that way I can deal with collision in my own specific way.
Also how do I convert that, screen coordinates of a tile into the the array entry?
I've tried using TileX=Floor(BGCX/8) : TileY=Floor(BGCY/8) : Arr(TileX, TileY)=thistile : gosub @updatefull
Doesn't work, what happens is the tiles are placed far off screen. So... obviously the location it's scrolled to isn't just BGCX and BGCY how do I get the offsets
of say the tile in the middle of the screen? Hm m I even tried adding or subtracting 32, 64, and 128 to those values and dividing them by 8 to try to get the tile number. This isn't exactly easy to do for some reason and I think the math of it is pretty simple. Never had this hard of a time before with tile systems, especially when I'm coding them from scratch on pc. The offsets are always (Direct tile coordinate, minus the camera scrolling distance) to get the screen coordinate of that tile?
Thanks in advance. And also if you can answer sooner that'd be great since I'm losing internet soon and this is for Petit Smash Bros.

Got a project? PM ME on here!
Youtube: lostkitty64x
Want help with coding? PM ME! PM ME PM ME!! XD
FC: WIll post later.
Systems I own: ds lite, 3DS, PC/gaming, steam platform. I play alot of games. Just ask ! Minecraft anyone? :D

randomous

@Discostew That's an interesting use... you wouldn't even need to have an animation, you'd just need to scroll the HEX data. It's certainly not new, I just couldn't believe I'd never thought of it. Maybe because I never actually needed to animate the BG before lol.

Edited on by randomous

randomous

InsertPi

What is the point of HEX? And how do you use it? And what is it?

If Facebook, Myspace, Twitter, Instagram, and Snapchat were all destroyed, 90% of teens would go insane. If you're one of the 10% that would be laughing at them, copy & paste this into your signature and hope it happens.

3DS Friend Code: 2148-9259-0831 | Nintendo Network ID: IAmAPerson620 | Twitter:

Gimmemorecoinz

Oh yea in case anyones wondering or not? I'm in the petit wiki computer chat online. Probably the last day I can chat live if my internet goes down.

Got a project? PM ME on here!
Youtube: lostkitty64x
Want help with coding? PM ME! PM ME PM ME!! XD
FC: WIll post later.
Systems I own: ds lite, 3DS, PC/gaming, steam platform. I play alot of games. Just ask ! Minecraft anyone? :D

Pootrick2

Can you do sprites on PTCUtlities?

I LOVE petit computer AND anything Zelda/Minecraft related (i own all zelda games)

3DS FC=0919-9700-5328

3DS Friend Code: 0919-9700-5328 | Nintendo Network ID: Pootrick2 | Twitter:

Discostew

@Gimmemorecoinz

Getting tiles from a 2D array that makes up your level is simple. If you are using level-based coordinates (not tile-based coordinates) to grab the tiles, you must convert to tile-space by dividing the level-space coordinates by the pixel size of the tiles. So, if the tiles are 8x8, then you divide the level-space coordinates by 8 to make them into tile-space. You then just take the result and use them to grab the tiles in the array.

TILE=LVLARRAY(POSX/8,POSY/8)

Don't worry about using FLOOR when inputting values into arrays like this, because it rounds down the inputs automatically. Using FLOOR on these only wastes time.

For the 2nd part of your question (as seeing you're using my tutorial), BGCX and BGCY are meant for representing the top-left corner of the viewable area of the map. Using them for setting tiles would only result in setting tiles based on those coordinates. You could theoretically use them to be able to set tiles in a specific part of the viewable area (like in the middle as you asked) by doing something like this — LVLARRAY((BGCX+128)/8,(BGCY+96)/8)=TILE — but this'll set tiles relative to the screen vs the level itself, so every time the BG layer shifts, the "middle" ends up changing. Maybe that's what you want, so I won't argue. In my opinion, always try to set tiles based on the level itself. It is simply the more manageable method imo. Just like with my project, everything is based in level-space. If I want to get tiles for collision purposes, I convert from level-space to tile-space by dividing the coordinates by 16 (since my tiles are 16x16, made up of a 2x2 8x8 tile section). If I'm placing a sprite on screen, I convert from level-space to screen-space by offsetting the position by the position of the "camera".

Discostew

3DS Friend Code: 4425-1477-0127 | Nintendo Network ID: Discostew

Pootrick2

Can anyone make The Legend Of Zelda PTC page on the petit computer wiki. Because it was confusing for me for some reason

I LOVE petit computer AND anything Zelda/Minecraft related (i own all zelda games)

3DS FC=0919-9700-5328

3DS Friend Code: 0919-9700-5328 | Nintendo Network ID: Pootrick2 | Twitter:

randomous

@IAmAPerson Hexadecimal is just a different way of representing numbers. Our regular number system goes:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10.... 99, 100... 999, 1000

Notice that we increase the number of digits on the tenth number (then 100th, then 1000th); this is because we use the decimal system, or base 10. This means that each digit can represent an extra power of 10 values, so 1 digit can represent 10^1 values, 2 digits can represent 10^2, etc. Hexadecimal is base 16, so we don't increase the number of digits until we reach the 16th number. This means that each hex digit can represent an extra power of 16 values, so 1 digit can represent 16^1 values, 2 digits can represet 16^2 or 256, etc. This means we need to "make up" some digits:
1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10.... FF, 100.... FFF, 1000

In this case, A has the decimal value 10, B has the decimal value 11, etc. 10 in hexadecimal has the value 16 in decimal. 100 has the value 256.

I didn't really explain it well, so here's the Wikipedia page (which may actually be more confusing): http://en.wikipedia.org/wiki/Hexadecimal

In Petit Computer, the HEX command will just take a decimal value (say 17) and convert it into a hexadecimal string (which is &H11; the &H signifies that the number should be interpreted as 11 in hex, not 11 in decimal). Hexadecimal is particularly useful in computer programming (and thus Petit Computer) because each digit of hex can represent 4 bits. Hey, you know what else is 4 bits? The information that makes up sprites! Remember, a sprite pixel can only contain one of 16 colors, so each pixel can be represented by 4 bits. This is why you use HEX to represent the data in a sprite... it's just easier that way. Also, 2 hex digits can represent a full byte, which can take on the values of 0-255 (which is also useful).

Edited on by randomous

randomous

Gimmemorecoinz

Discostew wrote:

@Gimmemorecoinz

Getting tiles from a 2D array that makes up your level is simple. If you are using level-based coordinates (not tile-based coordinates) to grab the tiles, you must convert to tile-space by dividing the level-space coordinates by the pixel size of the tiles. So, if the tiles are 8x8, then you divide the level-space coordinates by 8 to make them into tile-space. You then just take the result and use them to grab the tiles in the array.

TILE=LVLARRAY(POSX/8,POSY/8)

Don't worry about using FLOOR when inputting values into arrays like this, because it rounds down the inputs automatically. Using FLOOR on these only wastes time.

For the 2nd part of your question (as seeing you're using my tutorial), BGCX and BGCY are meant for representing the top-left corner of the viewable area of the map. Using them for setting tiles would only result in setting tiles based on those coordinates. You could theoretically use them to be able to set tiles in a specific part of the viewable area (like in the middle as you asked) by doing something like this — LVLARRAY((BGCX+128)/8,(BGCY+96)/8)=TILE — but this'll set tiles relative to the screen vs the level itself, so every time the BG layer shifts, the "middle" ends up changing. Maybe that's what you want, so I won't argue. In my opinion, always try to set tiles based on the level itself. It is simply the more manageable method imo. Just like with my project, everything is based in level-space. If I want to get tiles for collision purposes, I convert from level-space to tile-space by dividing the coordinates by 16 (since my tiles are 16x16, made up of a 2x2 8x8 tile section). If I'm placing a sprite on screen, I convert from level-space to screen-space by offsetting the position by the position of the "camera".

I'm trying to make it so a sprite on the screen (the 'player' ) is able to place tiles right now. I want the tiles to be placed, basically right where the 'player' sprite is. I'm thinking of making a terraria clone or something that uses very LARGE maps. I could even increase the size of the array, by the looks of it.
Hmmhmm.. any tips on how I should handle a player sprite in this?

Got a project? PM ME on here!
Youtube: lostkitty64x
Want help with coding? PM ME! PM ME PM ME!! XD
FC: WIll post later.
Systems I own: ds lite, 3DS, PC/gaming, steam platform. I play alot of games. Just ask ! Minecraft anyone? :D

Pootrick2

I just got PTCUTLITIES does anyone know how to load a png into the character editor
Quick response Plzzzz

Edited on by Pootrick2

I LOVE petit computer AND anything Zelda/Minecraft related (i own all zelda games)

3DS FC=0919-9700-5328

3DS Friend Code: 0919-9700-5328 | Nintendo Network ID: Pootrick2 | Twitter:

Discostew

Gimmemorecoinz wrote:

Discostew wrote:

@Gimmemorecoinz

Getting tiles from a 2D array that makes up your level is simple. If you are using level-based coordinates (not tile-based coordinates) to grab the tiles, you must convert to tile-space by dividing the level-space coordinates by the pixel size of the tiles. So, if the tiles are 8x8, then you divide the level-space coordinates by 8 to make them into tile-space. You then just take the result and use them to grab the tiles in the array.

TILE=LVLARRAY(POSX/8,POSY/8)

Don't worry about using FLOOR when inputting values into arrays like this, because it rounds down the inputs automatically. Using FLOOR on these only wastes time.

For the 2nd part of your question (as seeing you're using my tutorial), BGCX and BGCY are meant for representing the top-left corner of the viewable area of the map. Using them for setting tiles would only result in setting tiles based on those coordinates. You could theoretically use them to be able to set tiles in a specific part of the viewable area (like in the middle as you asked) by doing something like this — LVLARRAY((BGCX+128)/8,(BGCY+96)/8)=TILE — but this'll set tiles relative to the screen vs the level itself, so every time the BG layer shifts, the "middle" ends up changing. Maybe that's what you want, so I won't argue. In my opinion, always try to set tiles based on the level itself. It is simply the more manageable method imo. Just like with my project, everything is based in level-space. If I want to get tiles for collision purposes, I convert from level-space to tile-space by dividing the coordinates by 16 (since my tiles are 16x16, made up of a 2x2 8x8 tile section). If I'm placing a sprite on screen, I convert from level-space to screen-space by offsetting the position by the position of the "camera".

I'm trying to make it so a sprite on the screen (the 'player' ) is able to place tiles right now. I want the tiles to be placed, basically right where the 'player' sprite is. I'm thinking of making a terraria clone or something that uses very LARGE maps. I could even increase the size of the array, by the looks of it.
Hmmhmm.. any tips on how I should handle a player sprite in this?

With placing tiles where the sprite is, what you should do is take the player's position (which I assume is level-based that gets converted to screen-space for displaying it), and work off of that, offsetting that position based on which direction the sprite is located (in level-space), and then convert to tile-space (divide coordinates by 8).

Discostew

3DS Friend Code: 4425-1477-0127 | Nintendo Network ID: Discostew

InsertPi

Pootrick2 wrote:

I just got PTCUTLITIES does anyone know how to load a png into the character editor
Quick response Plzzzz

@Pootrick2 go to the CHR editor, click the box next to Load Standard CHR and select BGF0. Here you can easily edit it, OR you can click Load with current palette. Select your image, and you're done! Click Make QR Code and I'm sure you'll know what to do from there.

If Facebook, Myspace, Twitter, Instagram, and Snapchat were all destroyed, 90% of teens would go insane. If you're one of the 10% that would be laughing at them, copy & paste this into your signature and hope it happens.

3DS Friend Code: 2148-9259-0831 | Nintendo Network ID: IAmAPerson620 | Twitter:

Pootrick2

Thanks your a life saver

I LOVE petit computer AND anything Zelda/Minecraft related (i own all zelda games)

3DS FC=0919-9700-5328

3DS Friend Code: 0919-9700-5328 | Nintendo Network ID: Pootrick2 | Twitter:

Please login or sign up to reply to this topic