It is currently Tue Nov 21, 2017 7:04 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 62 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next
Author Message
PostPosted: Sun Jun 08, 2014 8:43 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19238
Location: NE Indiana, USA (NTSC)
Have you ever played Super Mario Bros. 3? Play World 1 until you beat the first fortress, then move Mario on the World 1 map onto the spade icon and press A. Look at the huge honkin' mushroom, flower, and star "sprites", except they're not really sprites but actually background elements.

Have you played any of the later Mega Man games? Look at the huge minibosses and how they move around at a different rate from the ground. They're backgrounds too.

Do you still not understand? If not, it may take me a while (possibly days with my other obligations) to produce an animation that shows dozens of frames of both the screen and the video memory in parallel.

EDIT: Is this how smooth it must be?


Attachments:
2048isthishowsmoothitmustbe.gif
2048isthishowsmoothitmustbe.gif [ 14.12 KiB | Viewed 2363 times ]
Top
 Profile  
 
PostPosted: Mon Jun 09, 2014 7:05 pm 
Offline
User avatar

Joined: Sat May 31, 2014 4:12 pm
Posts: 139
This is how smooth it should be but what options does this give you for the color palette? Does this mean that you will have a much more limited choice of colors for the game blocks? My other concern is what will happen when game blocks get joined together. Won't there be problems with the attributes?


Top
 Profile  
 
PostPosted: Mon Jun 09, 2014 11:18 pm 
Offline

Joined: Mon Sep 27, 2004 2:57 pm
Posts: 1248
I'd be more concerned about the inevitability of running into the 8 sprite/scanline limit.


Top
 Profile  
 
PostPosted: Tue Jun 10, 2014 5:11 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19238
Location: NE Indiana, USA (NTSC)
@raydempsey
What's happening in the animation is that the middle portion is being scrolled as a strip of background, and the 16x16 color areas are scrolling with it. It means the area to the left and right side of the grid has to be a solid color. Do I need to make you a second animation showing what's going on in the video memory?

@Drag
There are only three velocities: 2, 4, and 6. I'd like to see what situation you think would require three blocks to be drawn as sprites instead of as a background (static images OK; you don't have to animate it).


Top
 Profile  
 
PostPosted: Tue Jun 10, 2014 5:19 am 
Offline
Formerly 43110
User avatar

Joined: Wed Feb 05, 2014 7:01 am
Posts: 313
Location: us-east
lidnariq wrote:
There's a goofy option to increase the total bandwidth: ...
That totally reminds me of when you converted Driar to NROM, and also now I see I miscounted updating requirements. :oops:

tepples wrote:
EDIT: Is this how smooth it must be?
I see that that animation has one problem that I caught myself doing when mocking things out. The movement is very linear, whereas the originals has some nice ease in movements (at least the browser).

If I were to have the time to work on the code base now using only my current working knowledge, I would use the method of updating the off-screen nameable at 30/25hz. I would also consider what Drag mention about tiles taking different steps each frame and my own observation of linear movement, and this is what it would look like.
Attachment:
2048-more-discussions.gif
2048-more-discussions.gif [ 8.71 KiB | Viewed 2295 times ]
I can try out other configurations to see if the way I did this would still work.

If I'm off base please ignore me. This post was kind of ninja'd 5 times over 2 days.


Top
 Profile  
 
PostPosted: Tue Jun 10, 2014 2:17 pm 
Offline

Joined: Mon Sep 27, 2004 2:57 pm
Posts: 1248
tepples wrote:
@Drag
There are only three velocities: 2, 4, and 6. I'd like to see what situation you think would require three blocks to be drawn as sprites instead of as a background (static images OK; you don't have to animate it).

Code:
│ [2][ ][ ][ ]
│ [2][ ][ ]
│ [ ][ ]
▼ [ ]


Top
 Profile  
 
PostPosted: Mon Jun 16, 2014 12:06 am 
Offline
User avatar

Joined: Fri Aug 23, 2013 2:14 am
Posts: 264
Sorry for the late post, but I have a question.

In Tepple's example, I can see what he's trying to do. My question is, how will it be possible to have the white outline to be completely solid when the background scrolls? In most situations, this would make the background scroll upwards as well, since you're just moving a 'slice' of the image. How can you have a background scroll in the middle of something without the white moving around? I'm assuming you're going to try to create "embedded" scrolling, which might have some artifacts that can be hidden with sprites. About the best way I can describe it would be the segments where you're walking around in bushes in Ultima IV; the entire screen is blackened except for a small area, and that area has black squares potentially hiding the artifacting. This is a contrast from SMB3's or Metal Gear's method of "walking in the shadows", since those just have the character move in a fixed screen, while Ultima IV has the entire screen scroll.

If my question doesn't make sense, it's because I don't know how to word it.


Top
 Profile  
 
PostPosted: Mon Jun 16, 2014 7:22 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19238
Location: NE Indiana, USA (NTSC)
OneCrudeDude wrote:
How can you have a background scroll in the middle of something without the white moving around?

The same way a playfield scrolls without the status bar moving around: timed writes to the scrolling registers. But then I acknowledge that Drag's counterexample makes this technique slightly less reliable.


Top
 Profile  
 
PostPosted: Mon Jun 16, 2014 7:59 pm 
Offline

Joined: Fri Feb 14, 2014 11:16 pm
Posts: 30
Location: Linköping, Sweden
Thanks for all the comments and suggestions! I've been recently very busy with work.

I initially considered smoother animation (also with sprites), but when I got the first 32px animation version working (almost same as now), I really liked how fast the gameplay was compared to Cirulli's and Veewo's originals. The 32px move animations can take as low as 1-4 frames depending how far tiles move. This short animation delay really accelerates the game and makes overall playtime shorter.


Top
 Profile  
 
PostPosted: Mon Jun 16, 2014 9:28 pm 
Offline

Joined: Fri Feb 14, 2014 11:16 pm
Posts: 30
Location: Linköping, Sweden
lidnariq wrote:
43110 wrote:
208 nametable entries has to be updated in a frame. I guess the options are[...]
There's a goofy option to increase the total bandwidth: fully unrolled loops of PLA/STA $2007 with stack haxery and using zeropage LDA $80/STA $2007/LDA $81[...] to store the entire tilemap. Since you're not using sprites (right?), this gives you enough off-screen time to schedule 324 writes during vblank, and you "only" need 312 ((16+2)×16 (nametables) +(4+2)×4 (attribute tables)) to update the entire display every frame. Using both techniques to update the entirety in a single vblank will take 272 bytes of RAM from zero page and stack, 1592-1800 (depending on how much is store in the stack and how much is stored in zero page) bytes of ROM and will complete the entire set of writes in 2144 cycles (out of ≈2260).


Interesting idea. Notice that the current code already has following trick to draw a single 128x8 tiles "slice" with only 4 reads:

Code:
; pseudo of 32x8 tile row write
LDA #<ppu addr hi>
STA $2006
LDA #<ppu addr lo>
STA $2006
.REPEAT 4
LDY tile_rows, X
INX
STY $2007
INY
STY $2007
INY
STY $2007
INY
STY $2007
.ENDREPEAT


This works because the tile graphics are pre-arranged. This means we'd only need 25% of RAM you calculated -- so we can even attempt to unroll everything into RAM! The above 128x8 slice code would become:

Code:
; 128x8 slice unrolled to RAM
LDA #<ppu addr hi> ; 2
STA $2006 ; 3
LDA #<ppu addr lo> ; 2
STA $2006 ; 3
.REPEAT 4
LDY #<tile character table idx> ; 2
STY $2007 ; 3
INY ; 1
STY $2007 ; 3
INY ; 1
STY $2007 ; 3
INY ; 1
STY $2007 ; 3
.ENDREPEAT
; total: 10+4*(2+4*3+3*1)=78 bytes


The unrolling would need 4*4*78=1248 bytes total which *might* work... Hmm, however, I think the 'PLA/STA $2007' idea is better since it'd only need 16*4=64 bytes of stack, and the code could be in ROM:

Code:
; 128x8 slice 'PLA/STA $2007' version
SET_PPU_ADDR <row ppu addr>
.REPEAT 4
PLA
TAY
STY $2007
INY
STY $2007
INY
STY $2007
INY
STY $2007
.ENDREPEAT


...I however have no plan to implement this -- conside this just an intellectual exercise 8-)

EDIT: If you wish to try this, the code is in bitbucket...


Last edited by tsone on Mon Jun 16, 2014 9:33 pm, edited 1 time in total.

Top
 Profile  
 
PostPosted: Mon Jun 16, 2014 9:29 pm 
Offline

Joined: Fri Feb 14, 2014 11:16 pm
Posts: 30
Location: Linköping, Sweden
usr_share wrote:
Here's my graphical suggestion — a less ugly Q and a slightly modified set of tiles.

Image


Thanks for the comment, but I will not make changes right now.

EDIT: If you wish, you can clone the repo from bitbucket and change the graphics to your liking... :)


Top
 Profile  
 
PostPosted: Tue Dec 30, 2014 10:43 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19238
Location: NE Indiana, USA (NTSC)
I made a video of me playing the version accepted for Double Action 53. Poorly.


Top
 Profile  
 
PostPosted: Wed Dec 31, 2014 3:24 am 
Offline
User avatar

Joined: Fri Nov 12, 2004 2:49 pm
Posts: 7272
Location: Chexbres, VD, Switzerland
Come on, winning at this game is very simple. Just use only down and left keys, if you can't because you're blocked, use right, and if you really can't use up (but prey so that a '2' won't show up at the place you don't want it to).

Then it requires a lot of luck and that's it.


Top
 Profile  
 
PostPosted: Sun Jan 04, 2015 8:49 pm 
Offline

Joined: Fri Feb 14, 2014 11:16 pm
Posts: 30
Location: Linköping, Sweden
Thanks Damian for the gameplay video. I forgot to make one myself :D

There may be multiple good strategies in the game, but I use similar as Bregalad. I try position the biggest tile to any of the corners. Then I merge the tiles on either of its sides in ascending order, so as to create kind of "merging pipeline". Worst case is when a new tile pops in the wrong place and I'm forced to move the tiles in an unwanted direction, breaking the "pipeline". This however makes the puzzle aspect of the game to stand out, as the "pipeline" or tile positioning must be redone.

Based on my observations after getting '1024' you really need good luck to win as a single tile can ruin the game. This is one of the reasons why I wanted to make the gameplay faster, as then you can retry (and lose :P) faster.

Has anyone got '4096' yet? I was quite close once.


PS. Probability for "4" tile in the game is around 10% (as in the original by Cerulli). More precisely it's floor(255/10)/255 = 9.8%.


Top
 Profile  
 
PostPosted: Sun Jan 04, 2015 9:54 pm 
Offline
User avatar

Joined: Sat Jul 12, 2014 3:04 pm
Posts: 950
tepples wrote:
Gameplay bug please: If there are two pairs one one row or column, should they be allowed to collapse in one press? They appear not to on this version. Try getting something like this and pressing left or right:
Code:
,--. ,--. ,--. ,--,
  2    2    2    2
`--' `--' `--' `--'
,--. ,--. ,--. ,--,

`--' `--' `--' `--'
,--. ,--. ,--. ,--,

`--' `--' `--' `--'
,--. ,--. ,--. ,--,

`--' `--' `--' `--'

This still seems to result in "4 2 2", which seems wrong to me, though I haven't played the original, but as the only way to free a square is to get multiple matches in one slide, and two horizontal pairs would otherwise still make two matches. (8 8 4 4 only seems to do one match, similarly annoyingly)

Very relaxing, nice music; graphics smooth.

Feels a trifle odd that you still get "New game/Continue" after you're stuck and press start. Perhaps relabel Continue when the fail-state is reached?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 62 posts ]  Go to page Previous  1, 2, 3, 4, 5  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 3 guests


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 post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group