Jump to content

Wrathchild

Members
  • Content Count

    2,924
  • Joined

  • Last visited

Posts posted by Wrathchild


  1. OK, this code, for the Atari 8-bit, demonstrates one technique

    of scrolling a Graphics 12 area without using HW scroll registers.

     

    It predefines 7 fonts with the same pattern for each character.

    The screen is arranged as 24 lines of 32 characters wide.

    This means that 6 fonts are visible initially, 4 lines each giving

    the 4*32 = 128 characters of the font. As this scrolls, the 7th

    font becomes visible and then when the 1st font disappears

    off the top, it re-appears from the bottom.

     

    Hence the technique can be expanded upon by using a tile

    expanding routine to place graphics in the font memory.

     

    To demonstrate that I setup a small piece of mainly code

    to animate the 1st character of fonts 1 and 2 by rotating

    them down and up respectively.

     

    There in lies a mystery. Earlier this worked OK, but in this

    last incarnation the pattern is not rotating constantly.

    Therefore I must be overextending an interrupt somewhere?

     

    With the alternative method I suggested of copying the first

    line of data from font to font, I'm a little worried that it would

    steel too many cycles, therefore indicating that it could only

    be used when using a smaller window in the vertical.

    I haven't got time to try that at the moment though :wink:

     

    Hope that helps.

     

    Mark

    scroll_test.zip


  2. I had some success with the first method, however timings

    are very very tight! Updates are done in the VBI but if I add

    a few more instructions in, a DLI occurs within another DLI

    after doing the course scroll.

     

    To get around this I have two options.

    1) Leave the scrolling area until a little further down the screen.

    2) Leave the course scroll until after the last lines are drawn

     

    I'll try 2 first and post up the code so far.

    My version currently scrolls up (e.g. like scrolling instructions)

    but I try to add a down mode as well (e.g. shoot-em-up)

     

    Regards,

    Mark


  3. A couple of thoughts on the course scrolling method required,

    i.e. once the fine scrolling does its 8 lines...

     

    1) (the easier) use a 6th font to scroll into, then when that's

    exhausted re-use font 1 which is not displayed, and just keep

    cycling around the fonts.

     

    2) (slightly less memory used) once a line has been scrolled

    adjust the dlist pointers foward one line in memory, but place

    the line 1 chars after line 3. An alternative could be to hold 3

    separate dlists and cycle though those. The course scroll

    routine should then copy the char-data from font n to font n-1,

    but only for the first line, e.g. 320 bytes

     

    Looking at method 2, a 32 char wide playfield would permit

    all 128 chars in a font to be used on 4 lines. The copy routine

    would only be required to move 256 bytes of data per line,

    speeding up to time taken to update the screen.

     

    I may have an experiment with this at the weekend.

     

    Mark.


  4. :idea: how about this...

     

    Because of the multiple fonts, using a v-scroll reg complicates things.

    Can you not use scroll-registers and have a single 'blank' dlist entry at

    the top of the screen with the DLI bit set.

     

    When you want to scroll, change the number of blank lines displayed.

     

    In the DLI, set the colors to background and then WSYNC a number

    of times (e.g. 8-# blank lines) and then switch the colours on.

     

    You'll need a similar DLI on the last line to set the colours to background.

     

    Hence the fine scrolling is controlled by the dynamic blank dlist entry

    and the viewing 'window' is maintained by turning on and off the picture

    at the correct time.

     

    Regards,

    Mark


  5. Thanks! One last change, just to the code, not the tune ;)

     

    The notes.inc file now uses midi note names, i.e. Middle C = C5

    Unfortunately for this player's code, the range of notes is

    only a window of 64 notes, so I've settle for E3 -> G8

     

    There may be a few more FF3 tunes I can pull out like this :)

     

    Regards,

    Mark

    changes.zip


  6. What's the "notation-range" exactly?

     

    In midi terms - g#3 -> c8

     

    Are you using the same wave on the whole notation?

    Maybe this will help (the latest message).

     

    Yes' date=' I'll take a look (& listen)

     

    In that thread I am trying to explain, how to optimize POKEY sounding, because sometimes the unwanted sounding isn't POKEY's fault, it is a fault of "physics". To compensate those faults, there are still some workarounds to do.

    Belonging to your problem, it is necessary to change the "wave"-manipulation in parallel to the heigth of the notation. But I don't know one music creating program doing so...

    From what I can see that is possible, possibly with multiple lookup tables depending on if you're in 16 bit or 8 bit mode and what clock freq that channel is tied to. Within the confines of a generic playback routine this work is a bit of an overhead.

     

    but' date=' maybe it will sound OK when transposing the melody a whole octave down?[/quote']

     

    I may give that a go. It will mean extending the current freq tab though

    and I need to see how far that goes down. It maybe better to have a second freq tab, clocking that with 64 KHz instead of 1.79 MHz.

     

    BTW: Are you really using 16 Bit and the Sound output from Channel 1 * 3?

    The joined generator is using channel 2 and 4. But the "high resolution" for generator "A" is on channel 1 and 3 .

     

    Erm, AudCTL is $78 if that helps?

     

    Thanks,

     

    Mark


  7. Here's a nice Final Fantasy tune done using two 16 bit channels.

    However the higher frequencies seem to go astray.

     

    Can someone take a look at see what a solution may be?

     

    I took the 'Storm' engine and made it two voices instead of 3.

    I also added in a small wave to the frequency. I understand that,

    as the the frequency gets higher, the effect of the mod is more

    audible, but it seems to help out the lower frequencies.

     

    Thanks,

    Mark

    ff3.zip


  8. Hi,

     

    Are there any sites that detail the techniques/algorithms

    behind drawing roads/tracks in old 8-bit games such as

    Pole Position, Outrun, Overlander, Elektragilde etc?

     

    I'm interested in how these evolved, e.g. adding hills,

    and how different display architectures, e.g. raster,

    tile based or (Atari) display-lists can be exploited.

     

    Thanks,

    Mark


  9. Here is a replacement emulator V4 exe that:

     

    1) enables the debugger and

    2) permits tracing execution to a named file.

     

    E.g. here's an example of something I'd do...

     

    Load emulator, booting to self-test.

    Press F8 to enter monitor and type:

     

    read sentinel.bin D00 A300

    break D91

    setpc 3F00

    cont

     

    This runs code until the breakpoint is hit and the debugger

    is entered, then type:

     

    break D99

    tron a800trc.txt

    cont

     

    Again, execution continues until the breakpoint is hit:

     

    troff

     

    The tron/troff code also includes some protection, e.g.

    you must type "troff" before typing "tron" a second time.

    If "tron" has no argument then you trace to the monitor (as before).

     

    I've attached the source diffs, however some explaination required

    as I was using VC++6 not and not .NET to build the exe:

     

    File "sio.c" : no in Windows

    File "fileservice.cpp" : too many args - dropped OPENFILENAME_SIZE_VERSION_400

    (Where does that get defined? Part of .NET I guess)

    File "display_win.c" : used Get/SetWindowLong instead of Get/SetWindowLongPtr

    (Odd one this, compiles fine but no library holds the functions, so linking fails)

     

    Files "cpu.c" and "monitor.c" contain the tracing changes.

    However, #ifdef TRACE becomes #ifdef MON_TRACE

    (TRACE is already a defined macro in Windows)

     

    File "config.h" : MONITOR_BREAK enabled and added MON_TRACE

     

    There is also a slight tidyup to the monitor 'help'.

    Previously the 'Press return to continue' didn't wait

     

    I hope that's of use to somebody... will FlashCart support be

    added incorporated into the V4 source at some point?

     

    Regards,

    Mark

    diffs.zip

    atari800win.zip


  10. Does anyone know of an old type in game from

    the UK's Computer and Video Games?

     

    It was called something like 'Show Jumping'

    and basically had a nice horse&rider sprite

    and right 2 left scrolled some fences at you at

    different speeds which you had to jump.

     

    It was 16K type in listing, but I recall my 600XL

    at the time crashing often after running the game.


  11. I had an opportunity to look into the drawing corruption.

    It boiled down to the Atari's OS VBI routines updating some

    zero-page registers I was using. Serves me right for using

    mapping the C64 zeropage usage 1:1 :ponder:

     

    So, this one draws correctly and I've added in the top view too.

    Press and release a console key once a screen has drawn

    to see the other view.

     

    I think for a future demo I could cycle through all of the C64

    holes, drawing the tee view and then the top view each.

    (plus tidy up the text areas)

     

    I'm away over the weekend, but promise to get back to the

    Combat conversion next week.

     

    Regards,

    Mark

    wcl.zip


  12. There's going to be a balance there, how many channels to use

    for the music versus how many to use for effects.

     

    With 2&2 you should be OK although that would just give you

    8-bit frequencies for the music. The music channels can typically

    be made sound like more instruments, eg. by interspercing

    drums and cymbal sounds in the bass line.

     

    I think you would need 2 voices for the effects, e.g. a pulsing ambient

    sound on one channel. Shots and explosions on the other. Or perhaps

    one voice each for player and ememy.

     

    The routines are normally interlinked. E.g. often you can change

    a byte or two in a SID or SAP file and then hear the effects rather

    than the tune.

     

    Regards,

    Mark


  13. Here's an example for all to see...

     

    img.c = the decompression program, takes a filename as an argument.

     

    nm50 = original image file from C64

     

    nm50.txt = Output produced by "img nm50 > nm50.txt" contains:

    1) Trace of the decompression, the figures in brackets are the Y and X

    pixel positions for the byte (e.g. divide X by 4 for the char offset).

    2) Data in raster format for later compiling :)

    3) Data in CSV format with two character patterns for each colour.

     

    nm50.xls = Coloured version in Excel 8)

     

    Regards,

    Mark

     

    PS. hopefully sticky this type of source out here

    may inspire some more people to tinker in this way :wink:

    nm50.zip

    • Like 1

  14. I just used Antic 14 for the display in this simple demo. The graphics

    mode for the BT intro method was done in 5 colour char mode

    and so this is what the game would use too, therefore yes they

    could be made a little more colourful. The problem at the moment

    was that I hadn't figured out where the C64 gets the palette from.

    Sprite under/overlays could be used but more hassle than its worth

    IMHO. They will be used for the duration spells icons. The demo

    also includes the images uncompressed wheras the C64 uses some

    weird RLE and interlaced compression format to hold these images (basically most of the NMxx files on the disks).

     

    Regards,

    Mark


  15. Hi all,

     

    Here's a simple demo you can run in an emulator,

    it comes as an XEGS 64K ROM image.

     

    The graphics, 65 images in all over 8 screens of 8 images

    and the last screen with a single image, come from the

    C64 version of Bard's Tale but are in the 3 color (plus background)

    of the Atari for now, but it gives you an idea of what they could

    be like.

     

    Enjoy,

    Mark

    bt_demo.zip

    • Like 1

  16. Are you able to convert sid music data to txt format, which RMT imports ?

    Its not answered if RMT uses this kind of format? It might.

    If a mapping can be produce then I guess we could write

    a convertor. When a human reads the C64 output you can

    often make out the intructions for the instruments (because

    you heard them too). Hence you can substitute it with an

    A8 equivalent. Once a collection of these is made then a

    stock A8 instrument library can be defined which every

    song would then use (or draw upon, i.e. include those mapped).

     

    You still have to understand each original C64 playback routine,

    which typically requires its disassembly etc, although there can

    be quite a lot of commonality between routines.

     

    Regards,

    Mark

     

    Ps. Anyone have a disassembly of the Last Ninja 3 intro

    player routine (Reyn Ouwehand) before I do one?

     

    Ps2. Can I get a relocated Atari SIDplayer as the LN3 tune has

    Load: $5900-$CE65, Init: $CE50, Play: $CDD0

×
×
  • Create New...