RIP to BT Garner of MindRec.com... BT passed away early 2023 from health problems. He was one of the top PCE homebrew developers and founder of the OG Turbo List, then PCECP.com. Condolences to family and friends.
IMG
IMG
Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - ccovell

#1
Hey, folks, I was poking around in the Sapphire ISO and initial loader (IPL) and found a few things.  First of which is a debug/configuration pre-load menu that went unused and deactivated:

IMG

The debug mode DOES work and has things to play around with by pausing the game and pressing buttons. The game can even run without the Arcade Card.

RAM Values for...
Debug: $2698 00/$FF off/on
Level: $269A 0..2  easy-hard
Play rec.: $269E 0..2 normal/trace/record
Demo No.: $001E 0..9 (not used ?)
Stage No.: $269C 0..9 all/1-9
Acc Read: $26A9 00/$FF off/on

If you skip the AC detection manually in the IPL, it loads the game, but with garbage for cinemas / large enemies / ground. If you set the above RAM value to turn "off" AC, it skips some screens and the BG is just blank. I haven't played through the game with these hacks yet.

Also, there is an earlier Arcade Card warning screen hidden in the ISO, before the well-known cheesecake pic was decided on:

IMG
#2
Quote from: Psycho Punch on 03/30/2018, 08:32 PMSo that's the infamous game that glitches out badly during stages if you open the disc lid lol. BTW, wouldn't the name of the game be Tenchi o Kurau?
It is technically the object marker "wo" IMG so writing just "o" makes it lose its distinction when romanized.
#3
Here it is, not so hard:
IMG
#4
A little update:  I decided to look into a couple Hudson games so far to see how they uncompressed their graphics data.  So, I'll post some notes here.  If anybody has any questions or wants to make contributions, please do.

In Bomberman, anyway, BAT maps, Palette data, and BG & SPR tiles all are compressed the same way (but written into VRAM in slightly different ways)

A pic of my Hudson compression decoder inside of PCEmon:
IMG

Some notes:
Bomberman & Neutopia use the same compression method

Neutopia analysis:

The game maps stuff in at ROM bank $4C, $4D, which are invalid, but...
Game mapping: bank $00-1F. Then 20-2F, repeating.
So banks $4C/$4D are really $2C / $2D.


Bomberman analysis:

$01:A4C0 starts loading tile graphics...

lda #$16, JSR $E377 (BG tiles...)
lda #$0C, JSR $E427 (SPR tiles...)

 Clear BG below:
lda #$20, STA $22BB, JSR $E6A4 (clear MAP with char #$20)

 Decompress BG MAP below:
lda #$03, STA $B4, CLX, LDA #$01, JSR $F5F3...
($B4 appears to be a title Gfx page offset.)
(Acc chooses MAP #)

-$F5F3
 + X -> $8D, #$03 -> $23BC, JSR $E704
 +-- $E704, A*2->X, $23BC -> MPR2
 +-- $E6EC, map in 2 banks pointed to
 | retrieve X->$8D->A
 | STZ $2213, $2215
 +-- $E750 (mangle address write value), write to VRAM
 | both X and Y set to #$1F
 +-- $F63F, decompress, write to VRAM. High byte added with $B4 before write.
 |   in a BPL loop with Y, then VRAM add. inc'ed by $80, then a BPL loop with X
 RTS





-$E377
  +-- $E397
  |    +-- A*2->X, lda $F03E-F,X -> $36-7
  |    <-- sheets 1,2
  |
  +-- $E400
  |
  |
  +-- $E4DC if $2210 is nonzero
  |
  |
  SMB0 $1A (update palette flag)
  RTS

ldx 0/1, lda 1/0, JSR $F5F3... BG MAPs?


$F03E: Master Gfx file pointer table - $23 entries

F0B6,F0BE,F0C6,F0CE,F0D6,F0DE,F0E6,F0EE
F0F6,F0FE,F106,F10E,F116,F11E,F126,F12E
F136,F13E,F146,F14E,F156,F15E,F166,F16E
F176,F17E,F186,F18E,F196,F19E,F1A6,F1AE
F1B6,F1BE,F1C6

$F084: same table, for sprites - $19 entries

F1CE,F1D6,F1DE,F1E6,F1EE,F1F6,F1FE,F206
F20E,F216,F21E,F226,F22E,F236,F23E,F246
F24E,F256,F25E,F266,F26E,F276,F27E,F286
F28E

$F0B6-F295: Master Gfx file data table (8 bytes each)

byte layout
0: Data source table entry # (in bank #$18)
1: X = VRAM Destination: $2000+$X000 (8k boundaries)
2 & 3: VRAM offset to add to Destination above
4: # of 8x8 tiles to write. "00" = 256 tiles.
5: Palette Data source table entry # (in bank #$0F)
6: Start palette # (0-F?)  ?
7: # of palettes to write to RAM buffer.

00,00,00,02,C5, 00,0C,04,
01,00,00,06,3C, 01,0B,01,
02,00,00,06,40, 02,0B,01,
03,01,00,00,60, 03,00,08,
04,01,00,06,20, 05,0A,01,
05,01,00,00,60, 06,00,08,
06,01,00,06,20, 08,0A,01,
07,01,00,00,60, 09,00,08,
08,01,00,06,20, 0B,0A,01,
09,01,00,00,60, 0C,00,08,
0A,01,00,06,20, 0E,0A,01,
0B,01,00,00,60, 0F,00,08,
0C,01,00,06,20, 11,0A,01,
0D,01,00,00,60, 12,00,08,
0E,01,00,06,20, 14,0A,01,
0F,01,00,00,60, 15,00,08,
10,01,00,06,20, 17,0A,01,
11,01,00,00,60, 18,00,08,
12,01,00,06,20, 1A,0A,01,
13,01,00,00,60, 1B,00,08,
14,01,00,06,20, 1D,0A,01,
15,02,00,00,40, 1E,0C,03,
17,01,00,00,9D, 1F,00,05,
16,02,00,00,A9, 1F,00,00,
18,01,00,00,00, 20,00,06,
19,01,00,00,6D, 21,00,03,
1A,00,00,04,7B, 22,0E,02,
1B,01,00,00,00, 23,00,04,
1C,02,00,00,40, 23,00,00,
1D,02,00,04,94, 24,07,01,
1E,01,00,00,A0, 25,00,02,
1F,01,00,00,DF, 26,00,0E,
20,02,00,00,7B, 26,00,00,
21,02,00,00,93, 26,00,00,
22,02,00,00,9D, 26,00,00,

notice 16 and 17 are swapped above...




Sprite data table byte layout
0: Data source table entry # (in bank #$10)
1: X = VRAM Destination: $2000+$X000 (8k boundaries)
2 & 3: VRAM offset to add to Destination above
4: # of 16x16 tiles to write. "00" = NOTHING!
5: Palette Data source table entry # (in bank #$0E)
6: Start palette # (0-F?)  ?
7: # of palettes to write to RAM buffer.


00,03,00,00,40, 00,1C,04,
01,05,00,00,3F, 01,18,04,
02,04,00,00,1F, 02,10,07,
03,04,00,00,1F, 03,10,07,
04,04,00,00,26, 04,10,07,
05,04,00,00,2A, 05,10,07,
06,04,00,00,21, 06,10,07,
07,04,00,00,3A, 07,10,07,
08,04,00,00,1C, 08,10,07,
09,04,00,00,20, 09,10,07,
0A,04,00,00,40, 0A,10,07,
0B,05,00,00,20, 0A,18,00,
0C,04,00,00,31, 0B,13,02,
0D,05,00,00,40, 0C,11,02,
0E,04,00,00,40, 0D,11,06,
0F,05,00,00,40, 0D,11,00,
10,04,00,00,11, 0E,10,03,
11,04,00,00,30, 0F,10,03,
12,05,00,00,40, 10,17,05,
13,04,00,00,39, 11,10,0B,
14,02,00,04,10, 00,1C,00,
15,02,00,08,20, 12,17,01,
16,04,00,04,15, 13,10,02,
17,04,00,00,08, 14,10,06,
18,05,00,00,12, 15,10,03



$18:4000: BG Gfx data pointer table - $23 entries
Offset is from $4000 in bank $18 (to $1F).

4046,45E7,48E0,4C74,526E,554B,5DED,606E,
67FC,6A98,75A1,7874,7FF9,8329,88E7,8BE5,
909B,9317,996E,9D32,9E8C,9FF1,A749,B3F5,
C091,CFF4,D811,DB50,F37E,FA02,FFC6,09F4,
1C0A,2318,2FBD

Offset of $4000 is removed from data pointers
before handling their banks, so apparent overflow doesn't matter.


$10:4000: SPR Gfx data pointer table - $19 entries
Offset is from $4000 in bank $10 (to $17).

4032,4DBD,5E92,684D,7167,7E63,8BAE,94F8,
A1CC,A967,B0AB,BFE1,C799,D453,DD7C,EC2E,
FDAA,004B,0CAF,19E2,299E,2B04,3162,3799,
393B


Palette offset table for the BG, bank $0F

404E,406D,408F,40B0,4127,4154,4172,4209,
423A,425C,42D3,4303,4320,4391,43BE,43D4,
4455,4484,449C,4527,4554,4575,45F1,461E,
4637,46AE,46DB,46FC,4736,4763,4785,47D8,
4861,48EE,492A,4954,49C4,49DF,4A15


Palette offset table for SPR, bank $0E

402C,407C,40E6,4145,41BF,4227,4286,42D9,
4339,437D,43C5,4455,448B,44C4,4545,458A,
45D2,4622,46E0,46F4,472F,47AF

BAT (MAP) offset table, bank $03

4020,4255,44A7,479E,4906,4AFA,4DB0,5177,
5296,53B5,5554,56CB,5816,5A27,5B66,5CF9
#6
Hi, folks.  This is more-or-less in time for the PCE's 30th birthday, but Konami's SCC add-on for the MSX turns 30 as well.  Since this summer I've been working on making a sort of SCC emulator/player for some of Konami's fab MSX tunes, and so why not release it today?

https://www.chrismcovell.com/data/BinaryStar.zip

IMG

I also posted in the dev section, please feel free to reply here or there: https://www.pcengine-fx.com/forums/index.php?topic=22755.0
#7
Hi, folks.  This is more-or-less in time for the PCE's 30th birthday, but Konami's SCC add-on for the MSX turns 30 as well.  Since this summer I've been working on making a sort of SCC emulator/player for some of Konami's fab MSX tunes, and so why not release it today?

https://www.chrismcovell.com/data/BinaryStar.zip

IMG

It plays .VGM tunes which I compressed down to a nybble stream by bit-encoding only the SCC and AY PSG writes.  The AY PSG is mappable to any of the PCE's channels, but I have one of them (for noise hits) usually mapped to the PCE's last channel.  I even have AY envelope emulation in there, although the AY chip creates voltage spikes through the envelope that just aren't feasible to emulate on the PCE.

Anyway, that's the tech specs.  Enjoy and leave a comment!

Post a thumb on Pouet.net (demoscene site): https://www.pouet.net/prod.php?which=72039

Youtube video capture (from emulator):
Technical document now added: https://www.chrismcovell.com/texts/binarystar-tech.html
#8
Quote from: Psycho Arkhan on 10/29/2017, 11:11 PMShow me?    I never played a lot of TML because I am not really big on Picross.    Definitely never seent it before.
I thought you would be resourceful enough to find it on your own.

On this page: https://www.chrismcovell.com/TMLogic.html, the demo was released in May 2006 (wow): https://www.chrismcovell.com/data/Tonguemans_Logic_DEMO.zip

IMG
#9
Quote from: esteban on 09/02/2017, 10:33 PM
Quote from: ccovell on 09/02/2017, 05:54 AMIt probably doesn't count for much, but Tongueman's Logic has PC-Engine CPUs for circuit boards, and my demo COURAGE has several Turbografxes and Turbochips around...
That counts, dammit.

But where are the screenshots for COURAGE? Help a cretin like me out!
These are in the demo in places:
Courage_Coll.gif
#10
It probably doesn't count for much, but Tongueman's Logic has PC-Engine CPUs for circuit boards, and my demo COURAGE has several Turbografxes and Turbochips around...
IMG
#11
I'd known about this easter egg for a while, just never bothered to try it.

Luckily, my Tennokoe Bank had an empty slot 4!
IMG
IMG

After entering the code, it says there's a present for users from Hudson Soft.  At this screen, no button press does anything; you have to reset/turn off the console.  The above save games are in slot 4 to be copied to the user's BRAM.

So, here's a dump of that BRAM!
https://chrismcovell.com/data/hudson-bram.zip
#12
Off-Topic / Re: Game Sack
02/21/2017, 09:12 AM
It's nice to see Chalvo 55 get some attention.  By the way, I did make maps of the levels:
IMG

a bunch of PNGs here: https://www.chrismcovell.com/data/Chalvo55_Maps.zip
#13
I was always partial to Gomola Speed
GomolaSpeed-Front.jpg

Others, too, I'm sure.  I prefer action, landscape scenery, cool Escheresque imagery, rather than just well-drawn Anime faces.
#14
Konami are dead to me now.
IMG
#15
Quote from: fragmare on 02/11/2017, 02:03 AMPeople will either be like "I've never heard of that game" or "No... you can't be trying that on the PC-Engine"

Can't eat.  Can't sleep.  Cca.... can't... stop... this......... FEVER!  ;)
IMG
Oh, great!  You're doing Atari's GOTCHA!
gotchaChase.jpg
#17
Quote from: elmer on 01/29/2017, 12:19 AMChris, I see your ...

Quote from: ccovell on 01/28/2017, 11:58 PMIMG
... and raise with ...
Drawing from the family's deep well, I see. :D
#20
I have had a few...  I guess I would like to work on Downland again someday.
IMG
What happened?  Uh, I guess cohabitation and marriage happened.  :]

Over New Years a year ago, I wanted to do something with full-screen realtime "depth cueing" (?) of an overhead map, and worked on the following.  It brightened land above you, darkened it below you, and had an animated "sea level" plane that you could move up or down, too.  If you got your head underwater, it'd drown the screen in blue (seafoam layer on SuperGrafx, too).   But the visual impact is not quite there, IMO.  And I immediately found the cool NTSC chroma trick which became my "Old is Beautiful" demo, so I lost interest.
IMGIMGIMG

Perhaps in the future, an isometric map traveller with depth cueing would be a better pipe dream...
#21
It's Metamor Jupiter.  My review: https://chrismcovell.com/MetamorReview/

IMG IMG
IMG IMG
#22
I did some more playing around with waveforms this week, as I massaged a C64 8580 SID filter sweep recording into 5 bits/32 samples per wave.

So, the program, with ASM files in case anybody can suggest changes to the code:
https://chrismcovell.com/data/TIN_SndTest.zip

IMG

And so I took some oscilloscope traces on my CoreGrafx of the "old" way of waveform writing compared to the "new" suggested one.  Well, they both exhibit popping on the audio line, with the "new way" better at some frequencies, and sometimes worse.  But look:
NewOld
IMG IMG


That "flatlining" you see in the new style of writing -- that I thought was the TIN effect, but isn't because the old style uses TIN too -- looks to me like a race condition with the waveform read hardware, because it happens intermittently, but often enough to be unwanted.

I also recorded from the SuperGrafx:
NewOld
IMG IMG

And the SGX again (both below are "NEW" writes) showing that sometimes the waveform changes instantly, sometimes there's the flatline.
IMG IMG

So, can anyone suggest changes to the new writing style to eliminate flatlining, popping, etc.?  For now, the old way still sounds a tad better.  Oh, be sure to test out the ROM on old PCE hardware too.
#23
Quote from: elmer on 01/09/2017, 11:12 PM
Quote from: ccovell on 01/09/2017, 10:51 PM
Quote from: elmer on 01/09/2017, 08:13 PMThe frequencies are (approx) ...
[tt]
r7=30  55938 Hz[/tt]
Is r7=31 (0x80 | 0x1F) invalid, duplicated or something?
In the case of the noise frequency, the divider used is a complement (i.e. NOT) of the register value, with a zero-divider being illegal.
So a 0..30 register value, instead of the normally-expected 1..31.
(According to the docs, anyway.)
Hmm, interesting.  The actual hardware still produces noise at $1F... it sounds perhaps higher than $1E but also a tad quieter.  Didn't know that was an "illegal" setting. :\

Quote from: fragmare on 01/10/2017, 03:46 AMLooking at the shot that CCovell posted, it looks like there is some discrepancy where one wave ends and another begins, and you've essentially created a small saw wave with a short sustain.
IMG
My little demo there doesn't try to match up the end of any wave, because in actual music, there'll be no way to make sure it's a smooth transition.  That blip there... perhaps someone can explain it?  At any rate, just looking in Mednafen's debugger, there is about a 4-sample offset due to the delay between resetting the wave pointer and the TIN kicking in.  That can be compensated for, but isn't crucial, is it?
#24
Yeah, disabled noise, and even set the LFO reg $0809 to #$80 (not just 00 like many games do) to turn it off properly.  Problem still persists.  Could it be a race condition bug or something like that?

Anyway, unrelated, here is the PCE caught in the act of switching between a rising sawtooth and a falling one getting TIN'ed in:

IMG

Here is the code for it:

stz $0800
stw <Copy_Freq,$0802
lda #$DF
ldx #$9F
sta $0804
stx $0804
TIN wave_sawinv,$0806,32
stw #DEF_FREQ,$0802 ;Write default frequency
Probably could be done a tad faster.
#25
Quote from: guest on 10/31/2016, 05:46 PMIMG
Congraturation!
Holy cow, someone loved Workbench 1.3-era Amigas enough to copy their look.
#26
I don't know how much this will help, but if you have a PCE/Turbo flash cartridge, you can try out wave phasing* on real hardware easily enough using my never-finished PCE sound tool:

IMG IMG
chrismcovell.com/data/PCMgine_b1.zip

In the top-right of the first image, you can see a "WF Cycle" function that ping-pongs between up to 7 different waveforms in memory at selectable speeds.  You can at least test things out this way.

*or a crude facsimile
#27
Psychic World on the Sega Master System had a pretty smooth and nice-looking fade in & out routine, so I wanted to find out how it did it.  Turns out it was a very simple 3-step process: for fade-outs, ramp down the red channel to zero, then do the same with green and blue sequentially.  Almost a bit too primitive, but it actually looks good in-game.

The SMS has only 3 shades of each colour channel (compared to the 7 per on the PCE) so a fade would have only a total of 4 steps if all 3 channels were simply faded out at the same time.  Doing it sequentially gives 10 steps total.  I'm sure similarly nice effects can be achieved on the PCE.

IMG
Above, using the SMS' limited colour space.
#28
Here are some graphics that fit the spec.  You don't have to give me credit in your final game.

IMG
#29
The archetypal one is a stash of porno mags, but there's also this:

IMG
#30
By the way, my page here has basically full maps to both Neutopia games: https://www.chrismcovell.com/gamesillust.html

IMG
#32
Off-Topic / Re: Game Sack
07/05/2016, 08:27 PM
Quote from: guest on 07/05/2016, 11:49 AMWhat's the difference between that last one and the arp-sounding parts of the Somer Assault soundtrack?
If you mean the effects in Songs #11 and 12 (ending), I don't know the proper term for it, but it's rapidly cutting the volume of the sound channel really quickly.  One might call it a trill or hard tremolo, but probably not arpeggio...

IMG
#33
Quote from: TurboXray on 07/05/2016, 12:26 PMccovell: How did I not know about this demo!?
I've asked myself that question, too.  :-|  Maybe people were preoccupied at the time.

Anyway, depending on the odd/even phase of the VCE at the time that you make it static, dithered patterns consistently give either a usable red (verging a tiny amount towards orange) channel over 15 shades, or a cyan (harder to wrangle because it is 2 RGB channels combined.)  So:
IMG

Another test demo: https://chrismcovell.com/data/OldIsBeaut-Test.zip

I didn't use any special tools; removing the R channel from 24-bit pictures is good enough, and the R can be remapped separately to greyscale, or some ramped red/grey; the remaining G&B can be remapped down to PCE BG palettes, since there are now 64 colours possible per tile that have to be reduced.
#35
IMG

Cool effects can be done, but things like filled polygons & rotation... the PCE cannot do very well.  A lot of the transparency, cut-out, stretching effects that the Amiga pulled off by shifting around bitplanes & playing with the scroll registers can be done on the PCE with few problems.
#36
Some food for thought:  When the PCE had its big announcement in the summer of 1987, going on sale that October, the following expansions were also announced and "pictured": CD-ROM, LCD TV attachment, keyboard, computer connectivity, modem.
IMG
#37
One more from near the end of NEXZR:

IMG
#39
Hi, folks.  I recently found out that some former Psygnosis staff have made a group on Facebook, and in addition to sharing old tales, one of them has released (so far) 40 floppy disk dumps from disks used in the Early '90s at Psy.

Link: Facebook link

The disk images are a mix of PC-DOS and Amiga formats, with one FM-Towns image in there as well.  Most of the disks contain Deluxe Paint IFF pictures and animations, with test artwork mainly from the FM-Towns version of Shadow of the Beast, with some Beast 2 / 3 stuff in there as well.  (One disk also has the Lynx version of Beast with the Epyx Amiga realtime debugger software too.)

A good amount of the PC-Engine version's artwork is in there as well (seen in some of the DOS IMGs).  It's interesting to see that the FM-Towns version was the lead CD version of Beast, with the PCE version tailing after it.

Some example images:
(PCE version)
IMG
were the following ever used in the game?
IMG
IMG
IMG

And here are some animations showing an in-progress cutscene
IMG
The original animations used in the FM-Towns and PCE-CD versions are in their original IFF ANIM format:
IMG

Very cool to explore if you're handy with disk imaging software and a hex editor!
#40
IMG IMG

I would take out the extravagance of the purple backdrop and make it a coppershade palette effect, put the hero (or dragon) and logo onscreen as sprites, and Roberta's your post-op aunt!
#41
Quote from: Digi.k on 05/09/2016, 06:21 PMStar Parodier
IMG
No scaling happening here, just shearing.
#42
Some of you may have already seen this, but this is the extent of the Darius Plus mode:
IMG
#43
Quote from: guest
Quote from: ccovell on 02/23/2016, 08:46 AM
Quote from: guestNo correct guesses.
Here's more:
sasd2.png
Hmmm... frozen products... Urusei Yatsura?
Of course.
Geise's turn, then!
#44
Quote from: guestNo correct guesses.
Here's more:
sasd2.png
Hmmm... frozen products... Urusei Yatsura?
#45
Quote from: elmer on 02/21/2016, 07:41 PMNicely done!  :)

I'd bet that people were surprised to see a PC Engine at the Demo Fest.
Thanks!

The organizers were happy/intrigued, but a random sampling of guests kinda proved an earlier statement of punkfloyd's about their PCE/SGX demos: nobody really knows what the PCE is ("Is it a graphics card for the PC?", I heard) nor what it is capable or incapable of.  I love the demoscene but it is often removed from the retro gaming scene, as I'd call it.

Anyway, here's a little explanation of the "hicolour" effects in the slideshow:
IMG

The added benefit is that you can devote an entire colour channel (red, or cyan if you want) to one layer (sprites or SGX BG...) and the remaining channels to the standard BG.  This means more & a greater variety of colours together in a confined space, with no attribute clash.  Hopefully.

A test of this is here: https://chrismcovell.com/data/OldIsBeaut-Test.zip
I and II change palettes.
#46
Quote from: elmer on 02/12/2016, 12:03 PM...I go around trying to make sure that the font printing looks as-good-as-possible in anything that I work on.
Oh. 

On that note, Elmer.  Sorry, I forgot to tell you that I had already fully translated Xanadu.  The patch is up on RomHacking.net now!  Today!

Preview:
IMG

;-D
#47
Macaulay is such a turncoat:
IMG
#48
I knew there was some kind of dropout related to narrower screens.  Aladar, thanks for demonstrating that with your sprite grid.

Incidentally, I had updated my Screen Dimension test earlier, but the sprite dropout display is a good reason for actually uploading it.  (I've added in a grid of sprites too.)  Looks like (especially at low resolution) sprites drop out (not merely glitch) if you make the display too narrow or too wide.

IMG
Link: https://www.chrismcovell.com/data/Screen_Dimension_Test.zip

So, for games with narrow screens (Like 1941), I'm wondering if the programmers kept these limitations in mind with their sprite logic...
#49
Quote from: TurboXray on 12/11/2015, 01:25 PMThis in itself is significant, because I can actually scroll an un-interruptable stream of sprites from edge to edge. On a 256px wide screen, at any given point scrolling a solid horizontal stream of sprites would be either 16 or 17 sprites per scanline. As soon as you hit 17 sprites, which is going to happen ~99% of the time, the overflow limit kicks in and one of those sprite cells will drop out. That breaks the illusion. But with a 240px wide window, the requirements will be 15 or 16, and since 16 fits within the SPL (16x16=256px) - the illusion is maintained. You can visualize this as a block wall that a sprite can't appear in front of.
This is of course a desirable effect, putting up a solid wall of 2nd layer graphics without breaks.  And to mask out the "17th/1st" sprite, you either have to cover the break with graphics, or narrow the game view.  (Didn't Charles Macdonald do tests revealing that if you narrow the width of the screen too much, sprites begin to drop out?)

Anyway, the former is what I did on TML, as you probably know:
IMG

I tried to create the impression of at least 3 layers, 2 of which were the same background:
IMG IMG
But where the rotating background "overlapped" the fixed one, there was a gap.  So, in some cases, the BG overlapped sprites to mask their disappearance, and in another case, sprites overlapped the BG.
IMG

Re:narrowing the screen

It is kind of a shame that, in order to get enough players/enemies on-screen in addition to a wall of sprites as a background, you'd have to narrow the screen so much.

Another option (keeping a wide screen) is to have only a few sprites used as background graphics, but have smart use of BG colour gradients ("copper bars") to fill in the gaps between sprites so it looks like the gradient and sprites are part of the same background image.  IIRC, Mega Turrican on the MD/Genesis Turrican 3 on the Amiga does this to make "pipes" appear in the far background.  (pic here:  http://retroshowcase.gr/images/computers/Amiga/176/1.jpg )
#50
IMG

Here's my guess...