QuoteHopefully it will also glow in the dark.Depends on if we can find a reliable supplier of quality glow-in-the-dark plastic :/
![]() |
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. ![]() ![]() |
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 MenuQuoteHopefully it will also glow in the dark.Depends on if we can find a reliable supplier of quality glow-in-the-dark plastic :/
QuoteSongs for long car rides should be longer than average pop song. At least, that's what I say now.How long should they be?
QuoteThat's to say nothing of the reduced performance from the phenomenal amount of bank switching that would be required.As opposed to the time to load things from CD?
QuoteI tried to read cdrom.asm for that cd_execoverlay function and I ended up being more confused.Welcome to my world, 2 years ago. There are still parts of the startup I don't understand...
QuoteWhy "JMP $C000" after loading an overlay?See startup.asm around line 263.
QuoteI get that ovlarray is the table, but where is this defined in the dozen inc/asm filesAgain, it's in startup.asm, line 168. First thing in DATA_BANK (which is bank 3 for cds, I think).
in HuC's include folder?
QuoteBesides, it feels like a good portion of the code inside the library is justA lot of it is, when building cd's. Many of the bios routines are duplicated
a thin wrapper into the BIOS routines anyway.
QuoteI'm ditching the default ISOLINK too, while I don't want any table'ing messingWhat I ended up doing was splitting the HuC ipl.bin in two, like you did, and renaming the
with my code nor default IPL stuff, I do want sector padding for non-overlay files
(like ADPCM samples) and 8-second track compliance. Perhaps I'll mod it or create
a new program for this, but for now I'll just stick with MSDOS "copy /b" to
join overlays and a hex editor to pad .bin files into 2048 byte sectors,
which is working OK in emus for now. What about IPL? Well I clipped off half of
the IPL.bin file and did this:
QuoteAhh much better. Sorry for the huge rant, I hope no one interprets this as aUnderstood. And seconded. It's a pain, even in HuC, to get things 'just right'.
"I'm too good for what everyone else uses" thing, that wasn't the intention.
I just want to do this in a way that my dumb brain doesn't get too confused.
For now I simply cannot work with the default libraries because it's too much
effort to figure out what goes where
QuoteI can't figure out if overwriting the second byte of my overlay with '1' has any meaning whatsoever ...Nope. ISOLINK also updates the overlay table with the location/size of the overlay(s).
It's just a overlay "index", ie if the overlay is the third parameter for ISOLINK it gets a 3 inserted into it ...
I hope that's the only change it does to the compiled overlays,...
QuoteSo is there any way of getting around this when it wants the tracks to have a certain length?There are always ways around those things. The question is, is it worth the time and effort.
QuoteBut to Mednafen, and presumably a Turbo Everdrive, 384KB ROMs were actually manufactured back-in-the-day using 2 separate ROM chips,Correct, got that.
Quote1 256KB ROM chip mirrored at banks $00-1F, and then 1 128KB ROM chip at bank $40-$4F.Okay, so there's a hole in the address space.
QuoteSo when Mednafen loads a 384KB ROM, it puts things into different banks than HuC/PCEAS expectedAnd mednafen is mapping the upper ROM chip where? Does it duplicate it (so its mirrored) or what? Any more info?
QuoteNow, to me, the simplest "fix" for this would be to add an optional flag to PCEAS to make it automatically pad HuCard ROMs to the nearest power-of-2, i.e. 64KB/128KB/256KB/512KB/1024KB.Lol. <snort>. Changing HuC/PCEAS is probably going to be a pain. There's a better way, actually.
QuoteNice. I don't understand why some games need you to do this and others don't. For example, I took tracks from Lords of Thunder and replaced every song in Sapphire. I also took tracks from Gate of Thunder and replaced every song in Sapphire with those too. Never had to worry about this shit.The CD_BIOS has a few ways of playing audio tracks.
Quotegreat news today for the game : the music theme is integrated !+1 !
QuoteNo need to try and hunt down an old burner that will burn slower.Agreed. Newer electronics have faster switching speeds. I assume that the laser can switch on/off fast enough that the slower rated speeds have no problem creating short enough transition areas. Its the faster speeds that have problems; even if the drive can do it, the transition area may not be within tolerences. Which may be why slower speeds work.
QuoteSure but why would that have anything to do with how fast the burner does the job?The faster the drive (read or write), the faster the disc spins.
Quoteemailed it to you.Got it. Thx.
QuoteWell, the last "bank" not "page", but yes, that's what it appears (to me) to be doing, and then it maps it into MPR4 ($8000-$9FFF).Right, bank. (That's the 24-bit address in the card. I still get them confused.)
Quote...if you wish to keep on accessing the internet with an out-of-date version of Firefox on an unsupported version of Windows.Hey, if it isn't broke, don't fix it
QuoteThanks for adding that, and for finally making it available to me, yesterday, for testing.It's been done for a couple of weeks. Was just waiting until I got the rest to be compatible.
QuoteNow I see why Catastrophy is sitting there with banks 5,6,7 and 8 completely empty, and with bank 4 just containing a totally-unused 200-byte table for program overlays.Feel free to move the mml into bank 5. It's simple enough to re-build the snginit() with a different page.
QuoteNope, I didn't rebuild the MML because I didn't need to ... there's already a working MML file.Yes, but it was built for an SCD. You need to re-build it for a CD, which involves specifying a cd-useable bank number.
QuoteAnd you already know that I need you guys to change mml2pce in order to add the "__" to the variable names.Already in there, with the -p flag.
QuoteSo ... with your new version of mml2pce, I've built a working CD of squirrel.c, and I can see that "yes", there's a problem when you try to put the sound data in bank 6 ... but everything is happy if you change it to put the sound data in bank 5.So, if I understand this right....
Err ... I'm not seeing any problem with that. The new HuC is a bit more strict about where it puts the trampoline code for banking in the .proc functions.
QuoteThe big question is why-on-earth put the sound data into bank 6???Because it was the highest unused bank. That way, we didn't have to keep going back and moving it
QuoteYou should be putting the sound data into bank 4.And have it over-written when we added new graphics and stuff?
QuoteBy declaring that the sound data starts in bank 6 (or 5, or 9), you're just pushing all of the code into later banks and wasting space.Understood. But there's no reliable way to know the last-used bank ahead of time, that we have found. Of course, its been a few years since I looked at, and I've learned some things since then, so maybe I'll find a better way.
QuoteDropbox doesn't use Java (the programming language), it uses Javascript (aka ECMAscript), which is built into all web browsers. They are totally different technologies.Same basic technology - the website wants to run a program on my computer. Sorry you didn't know.
Now, if you choose to avoid all websites which use Javascript, then good-for-you ... but it would be helpful to know that.
QuoteBTW ... you can just install noscript or something like that to gain control over the execution of Javascript in your web browser.So i should install and run someone elses (possibly buggy, possibly invasive) program when I can just turn Java and it's variants off? And lose the added bonus of no more forced ads and tons of spam? <sarc>
QuoteAnyway, I've emailed you the fully-working version of Squirrel (for both the old and new HuC).I'll pick it up tomorrow. E-mail me the latest compiler, too, when you get a chance, so I can check to see if I've broken anything else.
QuoteI *really* need a copy of your test setup in order to replicate whatever you're seeing.I'll be mailing it in a few minutes. It's a .zip, you have to re-name it. Google won't mail zips.
QuoteI can't find "test1.c" in the Aetherbutt_Squirrel3.zip that I just downloaded (again) from Aetherbutt.My bad. I re-named it in the test directory. It's squirrel.c
QuoteAnd I'm having trouble replicating the problem that you're seeing.I didn't see you trying to build a cd version, with the mml in the right place. Bank 9 doesn't exist on a 2.0 card, and you don't appear to be re-building the mml....
QuoteJust for reference, I'm using the latest version of HuC, and the same version of Squirrel that I sent you guys back on November 21st (the download link is still the same).Nobody sent me anything. And I don't run Java unless absolutely required, so sropbox is out.
QuoteI was trying to engineer a solution where any new sound driver could say that it needed it's own bank, even *if* you were building for CD.Discovery of the problem was entirely due to regression testing the compiler before I started bringing in Huc. I wanted to know it was going to work for cds before I started on the card stuff.
Quote...easiest solution (to one of the problems) is to rename that equate to SCP_BANK or SOUND_BANK, and for me to rearrange the new startup.asm to make sure that it is always in bank 2, if it is invoked.Got it. I can change it to SOUND_BANK here.
QuoteThen I guess that we need some way to decide where the music data actually goes.We left that open to the user.
...
In Catastrophy, it doesn't *seem* to start putting data in until it reaches bank 8.
QuoteSo, unless I'm having a terrible senior-moment,....You too? I have them all the time...
QuoteYou are setting your new PSGF_* equates in squirrel.s?? afaik there is no squirrel.c to generate a .s file.
QuoteTo-be-honest, it was a label that I copied from your startup.asm in Squirrel 3.0 ... so you've got the same bug in there!Nope. I renamed the bios function numbers to PSGF_xxx.
You'd have to tell me what it is that you guys are using it for.
Quote...I'm not really sure under *what* circumstances LIB3_BANK is usedYeah, I figure thats what the problem with bank overflow is.
QuoteRemember Turbolist? Back in like 1993-1996 or some shit? It was great. Fuck, everything else. Black Tiger? Set it back up please.No, but I was.
Were you on that ARK?
QuoteMy point being, one could make a similar argument comparing turbolist to the PCE forums. (could but would be totally wrong) Guess what though? I do recall some dumb ass on there too.Agreed. I wonder how many of them moved here, later.
QuoteFUCK ME, there was a tiny hole in the garbage bag and a trail of soiled catBTDT. No fun at all.
QuoteSo, I didn't really follow along of what you're trying to solve.Not a timing issue, yet. I'm trying to get a feel for how quick and hsync routine would have to be to avoid the active display area.
QuoteI can't define the tempo. Tempo is how fast the song plays (not how fast the irq tick is). If a song is at 120 BPM ( a popular tempo),QuoteQuote from: TheOldMan on Today at 12:38:03 AMIf someone were to implement that kind of scheme, then you'd get as many calls as you like ... it's just a case of defining your tempo as something that's an integer multiple of 1/6991 seconds.
If I set the down counter to 120 (for 120 beats per minute), I will get timer irqs at the 'clock' frequency. If I decrement the down count, and call the psg driver when the counter hits 0, how do I do 32'nd notes? There are 32 of those per beat, and I only get 1 call.
QuoteBut while you can say that you *need* fine tempo adjustment for some reason ... most of the old games were done without it.You never played a game where the boss attacked faster as you did damage?
QuoteAnd ... what's the fuss with 1/32 notes (a demi-semi-quaver)?I'm not sure if the system card limits you or not, but that wasn't the point of the 1/32 note question.
Doesn't the System Card Player already limit you to 1/16 notes (a semi-quaver)?
QuoteIt's certainly possible, but it seems like a very high cost to allow both samples and a finely-adjustable tempo, and I really don't see the point....
QuoteThis sounds easy, but timing has to be precise. If run off the TIRQ instead of the H-int routine, it's mean super tight code for H-int as not to delay TIRQ by too muchWhich is part of the reason I was asking about running it from HSync.
QuoteThe question is ... is the System Card Player, and the IRQ handling in both the System Card and HuC smart enough to handle not only timer-followed-by-vblank, but also vblank-follow-by-timer???For the player, it is. Once the player starts processing, it locks itself out from further calls until it is done.
QuoteSo if you wanted 108hz tempo, set the TIMER to 6991 khz, set the software down counter to 108 (instead of writing it to the TIMER counter port), and on each TIRQ call decrement it. When it reaches 00, pass control to the PSG player. Otherwise, on each call you can now write a sample to any channel you like.I understand the theory (sort of). Here's the problem I have....
QuoteYeah, good point. If your code that's making these changes to the scroll are at the very edge of vblank's end, then it's possible something in vblank code is pushing it over.It's not even that. Consider the following:
Quote....what is the sort all about?My understanding is that the scroll regions are sorted by display lines. Then, when an hsync occurs, you don't have to look for the region to see if things need changed. Because they are sorted, you can check the current region, and if its the correct line, update the scroll registers and move to the next region.
Quote...damn ass musicians always wanting the world lol.+1. Though in fairness, Arkhan does manage some really nice sounding stuff in a small space...
QuoteAll channels, or any specific channel and any number of them, can be set to DDA mode. Or do you mean from the BIOS psg player?Yeah, i went and looked it up. All 6 channels can do DDA. Would probably be easiest to hack in on channels 5-6, since there's already support in the player to switch modes (ie, noise mode)
Quote...To hack in sample support, it seems that simply setting the PSG player tick to 1 and have the hook do the down counting and call the PSG player when that expires, for tempo control.I can sort of see how that might work.
QuoteI'm not sure how much space the ripped player takes up in squirrel package,~8k for the player. Some more in the library page for the actual driver call. (ie. mapping things in, etc)
QuoteAre people really ignorant of PCE audio stuffs??? Nobody reads the PCM threads I post either?Yes.
QuoteUnless Old Man and team get this figured out in time when you need it, hit me up when you guys want to do sample streaming support.Go for it. I have enough other things to do. (Like getting the player to work with the new Huc. Including timer irq support)
QuoteIt'd be nice to have realistic sound effects, rather than trying to reproduce a cat meow or screech using musical notes.If you can settle for low quality.....
QuoteWhat you're referring to is just simple sample playback.
Quote...a sample would have to disrupt the music to play.Not necessarily. We haven't figured it out yet, but there are 2 channels on the psg that can be set to "direct-dda" mode. In theory, you could use those for sample playback. Would require a streamlined irq routine, I think.
QuoteWhat-on-earth do you want more than 4 regions for???(faked) multi-layer parallax. Say, 3 sky sections and 3 ground sections.
Quotewhy wouldn't they just use sprites for the top and bottom status bars???Because they're in use for enemies/shots/etc. Not to mention, it's easier to update the BAT than it is to re-load the sprite data (especially for scoring).
QuoteFrom what I've seen, the scroll() does it's sorting and preparation during the vblank interrupt.What version of scroll are you looking at?
Quotewhy run Squirrel in a timer-interrupt anyway???Because we would like to speed the sound up during boss battles. And tempo adjustments are only available using the timer irq.
QuoteI find it highly-unlikely that anyone is currently creating music complicated-enough that a 120Hz or 240Hz timer-interrupt would make an substantial quality-difference to the stepping in the envelopes/sweeps.Take it up with Arkhan. He had a 135 BPM song with 32'nd notes for an arpeggio using faked adsr envelopes. It made a difference to him.
QuoteAnd if anyone is using Squirrel on a 60Hz timer interrupt instead of the vsync interrupt, then they need to be slapped around the face with a wet kipper...where's that wet kipper. I owe him a few, I guess....
QuoteAs Bonkuts said, this sounds more like an interrupt-handling issueI agree. I just don't know which irq is actually causing the problem, or why.
QuoteI very frequently use all four scroll regions.Rover: We did 5 or 6 on the pp title screen. You just have to adjust some sizes for the scroll list.
QuoteIIRC, Rover had this issue where it's slow, so doing other things (like using Squirrel) can cause flicker/line spazzery.scroll() is hooked into the hsync irq. It has to monitor the raster-hit irq bit.
QuoteHrm... I am not sure, as 32x3 8x8 tiles comes out to 0x600 words, not 0x800 words... unless the compiler is assuming 32x4 for some odd reason?IIRC, the pcx->pce conversion routine works in 16x16 pixel blocks. (ie, sprite-sized).
QuoteDoes anyone know why there's special-handling for bank $FE in this HuC code?Not certain about this, by any means, but...
QuoteIf I recall correctly, it's because the registers can't be read from the hardware.+1. I know the read data can't be (ie,vdc register 2.) Think about how it works.
Or at least not all of them can.
QuoteThink of how many PCE HuCard games were released after that, a lot (most?) using their company's own custom sound drivers.I do not think many companies developed their own sound drivers; I suspect it is more likely they modified the 'stock' system card one.
Quote...do you believe that the System Card 1.0 Player can recreate ALL of those effects???No, but I think a new modifed version could. Although I can't swear it would be compatible with all existing games.
QuoteWhy not just port the HuC libs to SDCC or something, and then throw our hands up and walk away?My goal is to split things up, so you only include the stuff you actually use. If you don't need scrolling areas, you don't include that code; if you do need them, you include them. If you don't need the system font, don't include it. Things like that.
QuoteI'd prefer to avoid the overhead of a JSR if possible (especially in a TIMER interrupt)I understand, but that's not -quite- what I was thinking...
QuoteIf those were something like "sound/vsync.asm", "sound/timer/asm", and "sound/system.asm", then you'd just change your PCE_INCLUDE environment variable to include whichever driver you wanted.I was actually thinking sound.inc would be an index of the available drivers, with a protected include for each one. Then in the main program file, you would #define which driver you wanted, which would enable the main include for the driver.
QuoteI think by MOD, you're probably meaning "tracker" or tracked format?To me, MOD means some program that looks sorta like a piano roll, and makes sound.
QuoteThe next big question is going to be how to get a decent (and legal) sound driver.I'm voting for a stock interface to the sound driver from system code. Kind of "these are the routines you supply, and this is when they are called". That would allow us to have multiple drivers (presumably in seperate directories in pce/include), that could be turned on/off via #defines in the user code. [Which would use sound.inc to include the correct files]
QuoteDo you know of any other good, popular MOD players?The place to start with that is Bonknauts. He did a -lot- of work on various sound routines.
QuoteIt's not mod files....Okay. You would know more about that than me; I only assumed mod files because of the naming.
QuoteI'm particularly interested now in what changes were made to the irq handler.From what I've looked at, at least the timer irq does nothing now (I think). It requires setting up a user irq handler to be useful. That's probably why the mml player doesn't work on the timer.
QuoteI'm not even sure there is a mod player, yet.There is a pair of files (st.c/st.h) that appear to contain the code to play mods (?). Not sure if they get included in the system or not, but they are available for use.
QuoteWhat mod player program???I'm not sure; I haven't looked into it that much. I'm not even sure there is a mod player, yet.
Quotez = a[x+y] into a[0] = z[x+y]Looks like somebody got the macro parameters backwards...