Image Map Image Map
Page 16 of 21 FirstFirst ... 6121314151617181920 ... LastLast
Results 151 to 160 of 204

Thread: MagiDuck, a DOS / CGA text mode game project

  1. #151
    Join Date
    Dec 2014
    Location
    The Netherlands
    Posts
    1,636

    Default

    Quote Originally Posted by ropersonline View Post
    I know nothing about it or its audio chip.
    The audio chip is a standard Texas Instruments SN76489.
    It provides 3 channels of squarewave with 16 volume levels, and one noise channel.
    The same chip is also used in many other systems, including early arcade machines and Sega consoles. See the wiki page for a list.

  2. #152
    Join Date
    Aug 2006
    Location
    Chicagoland, Illinois, USA
    Posts
    4,427
    Blog Entries
    1

    Default

    Quote Originally Posted by ropersonline View Post
    Do you know if it's possible to build or buy the DSS on a budget? (Zero hits on ebay for the DSS. Are designs freely available?)
    Keep monitoring ebay and one will usually turn up for $20 or so. Not sure you can build one without cracking an existing one open, although the tech reference at ftp://ftp.oldskool.org/pub/misc/Hard...ound%20Source/ does have a hardware diagram.

    Does this mean that the passed-through parallel port was still usable e.g. for a printer? Presumably you couldn't print and play audio at the same time though, right?
    Yes and yes.
    Offering a bounty for:
    - Documentation and original distribution disks for: Panasonic Sr. Partner, Corona PPC-400, Zenith Z-160 series
    - Music Construction Set, IBM Music Feature edition (has red sticker on front stating IBM Music Feature)
    - Any very old/ugly IBM joystick (such as the Franklin JS-123)

  3. #153

    Default

    Quote Originally Posted by Scali View Post
    See the wiki page for a list.
    Hmm. Wiki page list is incomplete. The PS1 (or at least certain models) had the same functionality, just on a different port than the Junior or Tandy 1000.

    Jr/Tandy == 0x00C0
    PS/1 == 0x0205

    WHY they put it at a different port when it's 100% compatible, damned if I know.

    Hence my now not only having Tandy / Junior detection:

    Code:
    ; function tandyDetect:boolean;
    pProcNoArgs tandyDetect
    	push  ds
    	mov   ax, 0xF000
    	mov   ds, ax
    	xor   ax, ax
    	cmp  [0xFFFE], BYTE 0xFD
    	je   .isTandy
    	cmp  [0xFFFE], BYTE 0xFF
    	jne  .notTandy
    	cmp  [0xC000], BYTE 0x21
    	jne  .notTandy
    .isTandy:
    	inc  ax
    .notTandy:
    	pop  ds
    	retf
    But also PS/1 detection for the appropriate models:
    Code:
    ; function PS1Detect:boolean;
    pProcNoArgs PS1Detect
    	mov  ah, 0xC0
    	stc
    	int  0x15
    	jc   .failed
    	mov  ax, [es:bx + 2]
    	cmp  ax, 0x0BFC ; PS/1 LW-Type 44 or Model 2011
    	je   .success
    	cmp  al, 0xF8
    	jne  .failed
    	cmp  ah, 0x30 ; PS/1 Model 2121
    	je   .success
    	cmp  ah, 0x0E ; PS/1 486SX
    	je   .success
    	cmp  ah, 0x0F ; PS/1 486DX
    	je   .success
    .failed:
    	xor  ax, ax
    .success:
    	retf
    The hardest part in dealing with it is that the ports are write only, so to track which voices are playing you need to have a 4 byte buffer set up. The reason for this is the "level" of what's playing on each channel is stored 4 bytes apiece. I tell you, figuring this *** out:

    Code:
    ; procedure tandySetLevel(left, right, voice:word);
    ; left level is ignored, right sets volume for entire channel
    pProcArgs tandySetLevel
    	mov   bx, [bp + 6]
    	mov   al, bl
    	mov   cl, 3
    	and   al, cl
    	ror   al, cl
    	or    al, 0x90
    	mov   cl, 0x0F
    	mov   ch, [bp + 8]
    	and   ch, cl
    	sub   cl, ch
    	or    al, cl
    	mov   [bx + tandyLevels], al
    	pRet  6
    Was a pain in the arse. Notice that the left level is thrown away since this is mono chip. The "procedure" is called via pointer where I swap the pointer program-side to the appropriate sound chip.

    It also helps to have a frequency to "interval" table created so you aren't doing long divides every time you change the voice -- I go with a 4096 byte one myself even though that skips every other hz with a 8khz max. (there is usually little reason on these chips to try anything higher).

    I should probably upload the current version of my sound routines, they're a far cry from what I was doing in Paku 1.x and makes it easier to add/remove soundcards. More fun since I've added SSI 2001 and soundblaster MIDI support to it. (original SB midi is not even CLOSE to MPU-401 compatible).

    Lemme see, current working cardlist in the code as it sits right now:
    PC speaker in 2 voice 120hz arpeggio, Adlib, CMS, JR/Tandy, PS/1, MPU-401 dumb, and original Soundblaster DSP Midi.

    On the to-do list would be AY-3-8930 (covox sound master), and IBM Music Feature... The latter is really hard to do when I have neither the hardware to test on, or documentation that's worth a flying ****; the IMF remaining one of the worst documented pieces of hardware I've ever encountered in that era.

    Again if anyone can tell me how to just set it up to work as easily as MPU401 dumb / SB DSP ... I've yet to find ANY code for it that makes the least bit of sense!

    Sadly with my health in the toilet I don't know if I'll actually get to implementing either of those; right now it'll be a miracle if Paku 2.0 sees the light of day even though it's ~85% complete.

    Of course if I do the 8930 I should probably write a 8910 implementation, though Mockingboard's for the PC are probably the rarest cards of all.
    Last edited by deathshadow; October 15th, 2015 at 06:03 AM.
    From time to time the accessibility of a website must be refreshed with the blood of owners and designers. It is its natural manure.
    CUTCODEDOWN.COM

  4. #154
    Join Date
    Mar 2006
    Location
    Massachusetts, USA
    Posts
    1,788

    Default

    IBM had to change the music port to keep the PS/1 machines AT compatible. The second DMA controller sits at C0-DF. Tandy eventually had to do this as well, although they chose a different port, 1E0. I imagine it would be easy enough to add support for the later Tandy models with a command line switch. I do not know how you would autodetect a Tandy with a chip at the alternate address.

    Do you find the IBM Music Feature's Technical Reference to be such poor documentation?

    I'd love to try your SSI-2001 support sometime on my replica. If you can encompass the Covox Sound Master and IBM Music Feature, your game will support the greatest number of music devices ever. No one supported them all.
    My Retro Computing and Vintage Gaming Blog : http://nerdlypleasures.blogspot.com/

  5. #155

    Default

    Quote Originally Posted by Great Hierophant View Post
    IBM had to change the music port to keep the PS/1 machines AT compatible.
    Thank you, that makes perfect sense. Been wondering that one for a few years, never got a straight answer.

    Quote Originally Posted by Great Hierophant View Post
    Tandy eventually had to do this as well, although they chose a different port, 1E0.
    Was completely unaware of that -- good to know. I'll have to investigate to see if I can figure a auto-detect method. You'd think since it's a AT thing just detecting 286 or not would be sufficient, but dimes to dinars those XT class 286 machines lack that second DMA controller... Well, if there's a way to detect the second DMA controller, that would be suffiicent. If it's there, use the other port.

    Though as you suggested, command line switch is probably the way to go. As it is, I believe I put in port overrides on the new code stack for EVERY device "just in case".

    Quote Originally Posted by Great Hierophant View Post
    Do you find the IBM Music Feature's Technical Reference to be such poor documentation?
    I have ranted at great lengths about what a steaming pile of **** that is. It's like it was written in bad broken engrish like trying to get tech support from AT&T, translated to Japanese, and then into English. None of the code samples make sense, seem to be functional, and nothing I've tried for code has worked for any of the people who have one trying to test for me.

    Which is annoying since all I want for routines is:

    Select internal or external.

    Normal everyday dumb MIDI UART write.

    Since I've got FB-01 working on MPU-401 and SB-DSP... Which should be ALL I need to implement to enable IMF. Pissed me off so bad I pulled the plug on IMF support and haven't even looked at the code in a year, since... well, EVERY bit of documentation I've found about it leaves me wanting to get medieval on someone's tuchas Samuel L. Jackson style with:

    cwean hw gncuman! cwean hw gncuman! Ic ne , Ic twifealde ne ! Englisc, modor-wyrter! Gedon eow cwean hit!?!

    ... and yes that's English, just a few centuries out of date. ... and how do I know this, you should know how; certain place I worked in the town you're living in! I can read Beowulf without needing the translation!

    Let's just say "what" ain't no country I ever heard of, and leave it at that.

    Quote Originally Posted by Great Hierophant View Post
    I'd love to try your SSI-2001 support sometime on my replica.
    I'll toss together a standalone demo and post it up in it's own thread for testing. It's still untested on real hardware, but since it's just a 1:1 port from my C64 version (that was designed to use different clocks since, well, PAL VS. NTSC -- so PC's different feeder was easy enough to adjust to) and seems to work with DOSBox's emulation on YKHWong's builds. I'd still like to get confirmation from something resembling real hardware BEFORE I release RC1 of Paku 2.0 (which will be the first public release)

    Quote Originally Posted by Great Hierophant View Post
    If you can encompass the Covox Sound Master and IBM Music Feature, your game will support the greatest number of music devices ever. No one supported them all.
    I'd have thought sierra's AGI/SCI games would have come close. Hell I was using a disassembly of Sierra's IMF driver as a guide as the manuals and documentation were so malfing useless.

    Though on a LOT of this stuff my efforts are simply hobbled by a lack of access to the real hardware. I have a cute little board I got from Jameco back in the 80's that lets be verify values coming in/out of ports that I can at least fake proper responses with, but that's nowhere near knowing if the real device is gonna output what it should.

    See my CMS struggles where a real game blaster worked, but SB's didn't... got that all squared away now. Newest version is ~30% faster and should work with every SA1099 equipped card out there.
    From time to time the accessibility of a website must be refreshed with the blood of owners and designers. It is its natural manure.
    CUTCODEDOWN.COM

  6. #156
    Join Date
    Dec 2014
    Location
    The Netherlands
    Posts
    1,636

    Default

    Quote Originally Posted by deathshadow View Post
    You'd think since it's a AT thing just detecting 286 or not would be sufficient, but dimes to dinars those XT class 286 machines lack that second DMA controller... Well, if there's a way to detect the second DMA controller, that would be suffiicent.
    I asked Trixter that question recently, about the XT/286. Apparently the XT/286 is fully AT-compatible, so the 'XT' in the name is a bit of a misnomer.
    I think in general it's a safe assumption that all 286+ PCs are AT-compatible (perhaps Tandy's are an exception here, but they're in a special class anyway).
    Anyway, I faced a similar problem recently, where I wanted to reprogram the PIC to use auto-EOI.
    The problem here is that an AT has two PICs, so you need to program them differently from a PC/XT-class machine with PICs.

    So I would read and write the interrupt mask of the second PIC to see if it would 'stick'. If so, there's a PIC at that address, if not, then I assume there is only one PIC in the system, so PC/XT.
    I don't think you can do such a trick with the DMA controller, but you could detect a second PIC. It's pretty much a given that a machine with two PICs also has two DMA controllers, and is AT-compatible.

  7. #157

    Default

    Quote Originally Posted by Scali View Post
    I asked Trixter that question recently, about the XT/286. Apparently the XT/286 is fully AT-compatible, so the 'XT' in the name is a bit of a misnomer.
    True for real XT/286's, but the tandy's were a bit different in that they still had 8 bit slots, so there was probably no reason to put in a controller for data lines that didn't exist.

    Mostly that would be the Tandy 1000 TL, RL and RLX -- 286 with a 768k memory limit and 8 bit slots.

    Its kind of a laugh, I don't think Tandy even made a machine with 16 bit ISA slots until they were making 386SX rigs -- the 1000 RSX.

    Hmm, that could be a detection, all of those models TL/RL/RLX/RSX will pass my TL test, so if it has a 386 or higher instead of a 286, the port has been moved?

    That's a good question actually, did Tandy even make a full AT class machine? Yeah, the wikipedia article says only the RSX moves the port, so that's the machine to isolate. Well, unless the 2500's / newer retained that capability, but I thought by that time it had been axed.
    From time to time the accessibility of a website must be refreshed with the blood of owners and designers. It is its natural manure.
    CUTCODEDOWN.COM

  8. #158

    Default

    Ok, MagiDuck beta 1 is now available for download: http://www.indiedb.com/games/magiduc...agiduck-beta-1



    Apologies for not posting anything about the progress. I've had some pretty taxing projects at my day job, so all my weekend energy has gone into development and lazing around... Then again, as said before, it's mostly been a grind lately. I guess the last 99% is the hardest? Mostly just working on new graphics, levels and scripting-type programming for different events and actors.

    The beta features:
    - 10 levels
    - 3 secret levels
    - 1 boss level
    - In-game help
    - High-scores
    - Ending animation
    - Power Orbs to collect in levels completed 100%. They allow flight, a score multiplier and higher damage.
    - Improved scoring
    - Improved enemy behavior
    - Improved level RLE encoding
    - Reloading a level no longer loads spawner data

    Also, it's finally possible to look down with 5 key as well as the down arrow.

    The high score file has some simple XOR-encoding to avoid tampering, but only for the names at the moment.

    Level loading times are slightly faster than before, thanks to the RLE noticing long runs of non-sequential tiles and not saving run-lengths for those. Spawner data is no longer reloaded when a level is loaded twice either. I tried thinking about solutions to save potentially changing tiles to a seperate string, but none seemed worth the extra space required... But let me know if the load times are too annoying

    The game folder is 162 KB. I hope fitting into a 180 KB floppy is still acceptable for a 5150 release?

    These are the test runs I've made for it so far:
    - DosBox-X 270 cycles, CGA: Played through the game twice.
    - DosBox, 270 cycles, EGA: Played a run of 5 levels.
    - PcEM, CGA: Played a run of 5 levels.
    - Real 386, VGA: Played through the game once.

    Had no problems on any of the runs. I'll start doing some fine tuning for the final release and wait for any disastrous bug reports or critiques. If everything goes well, I hope to release 1.0 before Dec 31.

    I'll ask everyone involved here for a permission to add your name to the credits once the game has been proven stable (or nothing comes up).
    Last edited by mangis; December 5th, 2015 at 12:21 PM.

  9. #159
    Join Date
    Aug 2006
    Location
    Chicagoland, Illinois, USA
    Posts
    4,427
    Blog Entries
    1

    Default

    Quote Originally Posted by mangis View Post
    The game folder is 162 KB. I hope fitting into a 180 KB floppy is still acceptable for a 5150 release?
    Yes, but since 5150s were only sold with single-sided drives for about a year (less than a year?), you can spill into a second side and nobody will fault you for it.
    Offering a bounty for:
    - Documentation and original distribution disks for: Panasonic Sr. Partner, Corona PPC-400, Zenith Z-160 series
    - Music Construction Set, IBM Music Feature edition (has red sticker on front stating IBM Music Feature)
    - Any very old/ugly IBM joystick (such as the Franklin JS-123)

  10. #160
    Join Date
    Dec 2014
    Location
    The Netherlands
    Posts
    1,636

    Default

    Quote Originally Posted by mangis View Post
    The game folder is 162 KB. I hope fitting into a 180 KB floppy is still acceptable for a 5150 release?
    Well, you could also take a page from the book of C64, and make it a double-sided game?
    On C64 you often had to 'flip disk' at some point in the game.
    That way you could create a game that fills two 160 KB sides of a floppy, giving you 320 KB in total.

    You can probably implement that in a reasonably straightforward way:
    Put the data of the first X levels on side 1 of the disk, and the remainder on side 2 (duplicating some shared data if required).
    Then when you need to load a new level, if you can't find the file, you display a 'flip disk' screen, and wait for the user to flip disk and press a key, then you try to load again.
    Don't forget to always save the hi-scores on the same side of the disk as well, so perhaps you need a 'flip disk' trigger there as well

    When running from a larger floppy or a harddisk, all files will always be found immediately, so the 'flip disk' screen is simply never triggered, so no extra work to be done.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •