Metal Gear 3: Return for Jennifer (MSX w/ v9938/v9958/V9990)

Page 3/7
1 | 2 | | 4 | 5 | 6 | 7

By Daemos

Prophet (2170)

Daemos's picture

28-05-2023, 19:03

The keen4 engine uses softsprites @ 30hz with smooth scrolling in screen 5 but only runs on r800 for the obvious reasons. If the character movement would be distributed per some frames, the same could be doable on Z80. I would avoid softsprites though it really slows things down. Especially in combination with smooth scrolling. The V99x8 bandwith is really a huge bottleneck. Need more VDP speed use a different VDP Wink

By Accumulator

Champion (351)

Accumulator's picture

28-05-2023, 19:16

Soft sprites is what I would like, but the copying enemies, ammo, snake, and rest takes too much time. The soft scrolling for V9938 in omnidirection takes 2 screen 5 pages, which takes also time for VDP and Z80..
My intention is to use lots of hardware sprites and VBLANK / screen split to increase number of sprites on screen and per line.
For the receiver for snake enough graphics available and items as well

By Daemos

Prophet (2170)

Daemos's picture

29-05-2023, 13:35

If there are not too many different types of sprites in screen the screensplit method would work perfectly. Objects that animate not so much and stand still could be rendered by writing to the background. Too many type of sprites would require you to write the spritedata each frame which is severely restrained by the speed of the vdp. then we have the 8 sprites per scan line. A huge pain.

By Accumulator

Champion (351)

Accumulator's picture

29-05-2023, 20:26

The 8 sprites per line can be overcome by using 2 SATs and change at Vblank. In theory 32 sprites could be used in 1 line.
And changing SAT per line, including sprite multiplexing, we can have more than 32 sprites on the screen, and more than 8 sprites per line.

As a base I would like to use the commented and disassembled source of Metal Gear 1 by GuillanSeed, which has also the base engine.
Step 1 is substituting graphix; logo, sprites and game art.
Step 2 is changing sound to SCC / MSX-Music
Step 3 is adding routines and graphix
Step 4 is changing the story line
Step 5 adding / substituting music and sound sfx
Step 6 ..... TBD

This is in short my plan..

It is possible.

By Grauw

Ascended (10821)

Grauw's picture

30-05-2023, 09:01

Accumulator wrote:

The 8 sprites per line can be overcome by using 2 SATs and change at Vblank. In theory 32 sprites could be used in 1 line.

You mean by using sprite flickering?

By Daemos

Prophet (2170)

Daemos's picture

30-05-2023, 19:33

I would build from scratch and only reuse init code. In later stages you will run against problems by adding more and more code. I should have rebuild one particular engine a long time ago. It costed me so much time to add up code and steer away from bugs and regressions.

Sprite flickering is your last resort. It looks reasonable if done ok but it will never look pretty.

By Accumulator

Champion (351)

Accumulator's picture

31-05-2023, 15:25

@Grauw, sprite flickering does not really work in my opinion. Because all sprites are going to flicker. right?
My concept is bit different. And still working on it, but it will really do the trick. (no vblank, but everyone thinks vblank, msx2 and up)
Depending if you are using multicolor sprites (or), or 1 color sprites, you need 3 or mode SATs. (16x16)
For 16 sprites in 1 line (256 in width), you need 24 sprites. (3SATs)
The first SAT is first range of sprites, second SAT, partial overlap 1 range sprites and 2nd range of sprites, and 3rd SAT, partial overlap 2nd range and 3rd range.
For example sprites start at line 100. First SAT is set at vblank or initial for sprites at line 100. (R5 and R11)
Setting line interrupt at line 99 or 100, and waiting for the line, R15,1 S1,b0
Waiting for HR R15,2 , S2,b5
Wait bit, switch to 2nd SAT, wait, Switch to 3rd SAT, border switch to 1st SAT (All R5 only)
Waiting for HR, etc, etc ,etc
Until you have done your 8+ sprites in y direction
This method should result in no flickering, but clear solid sprites

By DarkSchneider

Paragon (1030)

DarkSchneider's picture

31-05-2023, 14:49

I use the system alternating forward and backward drawing the characters list (all its sprites in a row for each character to preserve OR color mixing and the character sprites priority).
By this way can have up to 16 sprites in a row and they flicker in an odd-even frame basis.

By Daemos

Prophet (2170)

Daemos's picture

31-05-2023, 16:59

In Y direction doable yes. But what about the X direction? I used Darkschneiders technique to overcome the X limit with a little twist by only alternating the sprites that come in last. The result is however CPU intensive but made the sprites reasonable.

By Accumulator

Champion (351)

Accumulator's picture

31-05-2023, 18:48

What I mean by: Until you have done your 8+ in Y direction, is until you have done all the horizontal lines of the 8+ sprites in X and Y direction of course.
If you have 16 sprites of 16x16 in 1 line , it takes line 100 to 115 approx to draw all the 24 sprites.
Also you can alter the 1st and 3rd and add piece of previous line (last part) and next line (next part) and toggle 1st and 3rd,
is 3rd last with added beginning, than use 1st as 3rd, and next line other way around, to spare CPU and GPU time Wink

Page 3/7
1 | 2 | | 4 | 5 | 6 | 7