Jump to content
IGNORED

IntyBASIC Consistent Border with jzIntv and Real Cartridge?


First Spear

Recommended Posts

Mode 0,13,13,13,13
Wait
Border CS_WHITE,0
Scroll 4,4,0
For borderNew=0 to 200 Step 20 : Poke $200+borderNew, $2000: Poke $213+borderNew, $2000 : Next borderNew
Wait

I am trying to come up with some code that will make a 4 or 8 px border around the screen, that will display the same on jzIntv and on a real cartridge as well. The above code isn't quite working, can anyone point me in the right direction?

 

Thanks.

 

 

And Merry Christmas! I hope that your day has been good, if you celebrate!

  • Like 1
Link to comment
Share on other sites

BTW, the "-bXX" flag on recent jzIntv versions will add more of a border around the display window. For example, -b10 looks pretty nice. The XX is expressed as a percentage of the active display area. That'll make things a bit more TV-like.

 

So, it looks like your current code is setting the border color to white, but you've set the color stack entirely to light blue. You've offset the screen by 4px in X and Y, and you're advancing the color stack twice per row.

 

What effect are you trying to achieve? Did you mean to set up the color stack with alternating colors, rather than all light blue?

If I alternate between, say, light blue and yellow, I get the desired effect, I think. Here, I just replaced 13,13,13,13 with 13,6,13,6:

.

Mode 0,13,6,13,6   ' notice the alternating colors
Wait
Border CS_WHITE,0
Scroll 4,4,0
For borderNew=0 to 200 Step 20
    Poke $200+borderNew, $2000
    Poke $213+borderNew, $2000
Next borderNew
Wait
here: goto here

.

If I run that with the -b10 flag in jzIntv, I get this:

post-14113-0-29373100-1514248171.png

  • Like 1
Link to comment
Share on other sites

Wait... which "-bXX" flag? I just upgraded to the latest version a few days ago and I don't see it in the help page ("-h" flag)...

DropZone:p-mach_drv dz$ jzintv -h

jzIntv v1.0

Copyright 2017, Joseph Zbiciak
Portions    Tim Lindner, John Tanner, Rick Reynolds, Pedro Giffuni,
copyright:  Joe Fisher, Frank Palazzolo, Kjell Breding, Daniele Moglia,
            Marco Turconi, Andrea Mazzoleni (scale2x/3x/4x),
            Markus Oberhumer (minilzo), Oscar Toledo (AVI),
            Jean-loup Gailly (zlib), Mark Adler (zlib)

Usage:
    jzintv [flags] gamefile

Specifying a game image:
    jzIntv supports most, if not all, known formats for Intellivision
    game ROM images.  When invoking jzIntv, provide the full path to
    the game-image file.  If you omit the file extension, jzIntv will
    search for an appropriate file by trying the following extensions:
    .rom, .bin, .int, and .itv.  The overall ROM search process is
    somewhat involved.  See the jzIntv documentation for details.

    If the filename ends in .bin, .int, or .itv, or if jzIntv does not
    recognize the file's extension, it will assume the file is in BIN+CFG
    format.  In that case, jzIntv will look for a matching .cfg file.

    Systems with case-sensitive file names (Linux, UNIX, etc.) need to
    ensure the filename extensions are in lower-case.  On all systems,
    jzIntv expects to receive file names with lower-case extensions.

ROM Image Flags:
    -e /path/to/exec.bin          Specifies path to the EXEC ROM image.
    --execimg=/path/to/exec.bin   By default, jzIntv looks in current dir.  

    -g /path/to/grom.bin          Specifies path to the GROM ROM image.
    --gromimg=/path/to/grom.bin   By default, jzIntv looks in current dir.  

    -E /path/to/ecs.bin           Specifies path to the ECS ROM image
    --ecsimg=/path/to/ecs.bin     By default, jzIntv looks in current dir.  
                                  Only needed when ECS is enabled.

Intellivision Hardware Flags:
    -s#     --ecs=#               ECS.           0: Disable, 1: Enable
    -v#     --voice=#             Intellivoice.  0: Disable, 1: Enable
    -W#     --voicewindow=#       Sets averaging window for voice filter.
    -Vname  --voicefiles=name     Saves voice WAV files to name####.wav.
    -P      --pal                 Start jzIntv in PAL (50Hz) mode.

Video and Sound Flags:
    -z<res> --displaysize=<res>   Desired display mode:
                                  <res> can be a string of the form
                                  XDIMxYDIM,DEPTH such as "320x200,8"
                                  or a single digit specifying a built-in
                                  resolution from the following set.
                                      0:  320x200,8bpp
                                      1:  640x480,8bpp
                                      2:  320x240,16bpp
                                      3:  1024x768,8bpp
                                      4:  1680x1050,8bpp
                                      5:  800x400,16bpp
                                      6:  1600x1200,32bpp
                                      7:  3280x1200,32bpp

            --resolution=<res>    Synonym for --displaysize
    -f# -x# --fullscreen=#        Full screen display:
                                      0:  Windowed
                                      1:  Full screen
            --prescale=<ps>       Enable prescaler <ps>.  Use the flag
                                  "--prescale=-1" to print a list of the
                                  supported prescalers.
            --gfx-palette=<file>  Load alternate palette from <file>
    -G#     --gramsize=#          Change number of GRAM tiles
                                      0:  64 tiles (standard)
                                      1:  128 tiles
                                      2:  256 tiles (INTV88)

    -a#     --audiorate=#         Audio sampling rate.  0 disables audio.
            --audio=#             Synonym for --audiorate.
    -Fname  --audiofile=name      Records all audio to specified file.
    -w#     --audiowindow=#       Sets averaging window for audio filter.
    -B#     --audiobufsize=#      Internal audio buffer size.
    -C#     --audiobufcnt=#       Internal audio buffer count.
    -M#     --audiomintick=#      Minimum Intellivision cycles between
                                  explicit calls to snd_tick().

Input Configuration Flags:
    Currently, jzIntv does not offer a flexible method to re-bind keys.
    The kbdhackfile does allow you to crudely specify key bindings.

    --kbdhackfile=/path/to/file   Configure key bindings.

    -m#     --kbdmap=#            Specify initial keyboard map (0-3)

    Analog and USB joysticks have a rich set of configuration parameters.
    Run jzIntv with an empty configuration string to find out defaults
    are for your joystick and operating system.  For more information on
    configuring joysticks, see the file jzintv/doc/jzintv/joystick.txt

    --js0="config string"         Configures Joystick #0
    --js1="config string"         Configures Joystick #1
    --js2="config string"         Configures Joystick #2
    --js3="config string"         Configures Joystick #3

    The Classic Game Controller can drive either the Master Component or
    the ECS' controller inputs.  The following flags associate CGCs with
    controllers.  They also specify the path to the CGC's device node:

    --cgc0=/path/to/cgc           CGC for Master Component inputs.
    --cgc1=/path/to/cgc           CGC for ECS inputs.

Intellicart .ROM emulation specific flags:
    -c#     --icartcache=#        Change caching policy for Intellicart
                                  .ROM programs:
                                  0:  Cache bankswitched memory (default)
                                  1:  Don't cache bankswitched memory
                                  2:  Only cache read-only, non-banksw.
                                  3:  Do not cache anything.

Debugger flags:
    -d      --debugger            Enable jzIntv's debugger.
            --sym-file=path       Load symbol table from 'path'.
            --src-map=path        Load source/listing map from 'path'.
            --script=path         Execute debug commands from 'path'.
            --rand-mem            Randomize memories on startup

Misc Flags:
    -r#     --ratecontrol=#       \_ Speed up by factor #.  Setting #
            --macho=#             /  to 0 disables rate control.

    -p path --rom-path=path       Append path to the ROM search path.

    -q      --quiet               Hide jzIntv's non-error output.

            --gui-mode            Tells jzIntv to listen for commands from
                                  a GUI over stdin.

    -J path --jlp-savegame=path   Enable JLP-style save-game support with
                                  'path' as the save-game file.

            --file-io             Enable Emu-Link File-IO support
                                  (See examples/fileio/fileio.asm)

    -l      --license             License information
 -h -?      --help                This usage info

Environment:
    JZINTV_ROM_PATH               Controls ROM search path.  Components of
                                  the ROM search path should be separated
                                  by ":" characters.  jzIntv examines
                                  dirs specified by --rom-path before
                                  dirs specified by JZINTV_ROM_PATH.

Legal note:
    Intellivision(TM) is a trademark of Intellivision Productions.  Neither
    Joe Zbiciak nor jzIntv are affiliated with Intellivision Productions.

DropZone:p-mach_drv dz$ 

P.S. I just tried it, and it seems to be there... it seems you forgot to add it to the help page. ;) In any case, thanks for the tip! :thumbsup:

 

-dZ.

Link to comment
Share on other sites

By the way, just to get this straight, the "-bXX" flag renders the border larger by extending the viewport of the emulator outwards, right? In other words, it just affects the visual aspect of the emulated screen, but does not have any effect on the actual border width and position, as understood by the STIC edge mask and horizontal/vertical delay registers.

 

UPDATE: I just did a few tests and it seems so. Wow, this is cool! :)

Link to comment
Share on other sites

When I announced the last release, I indicated that the flag was experimental, since I'm not sure I like the current scheme. That's why it's not in the documentation. I wanted to add something, but the current settings scheme doesn't feel right somehow. So, I added a flag folks could use in the meantime, until we could figure out a better way.

 

All the flag does is extend how much of the overscan area gets drawn. If you ask for a 320x200 screen with -b10, you actually get a 384x240 screen, with 320x200 of STIC in the middle, and extra border-color pixels outside.

 

There's two resolutions I need to worry about (four if you consider fullscreen vs. windowed): The resolution of the active STIC area (where MOBs, background tiles, etc are visible), and the resolution of the window or display that I deposit that on. The second of those two must be equal or larger than the first. If it's larger, it just gets flooded with the border color, and the active STIC area gets centered in it, much like a real TV would do.

  • Like 1
Link to comment
Share on other sites

When I announced the last release, I indicated that the flag was experimental, since I'm not sure I like the current scheme. That's why it's not in the documentation. I wanted to add something, but the current settings scheme doesn't feel right somehow. So, I added a flag folks could use in the meantime, until we could figure out a better way.

 

 

Ah, gotcha! I haven't followed the forum too closely in the past months so I missed a lot of the announcements and enhancements. I should go back and check those out.

 

When you say "the current settings scheme doesn't feel right," are you referring to the flag interface (percentage of the screen), or something else? I admit that entering a percentage of the screen seems rather strange. Perhaps you should have a few pre-set sizes, something like "standard" (-b0), "small" (-b5), "large" (-b10), "x-large" (b25), or something like that.

 

That seems to work for the screen resolutions (-z flag), so it may be good here too.

 

Unless... I misunderstood your concern.

 

 

All the flag does is extend how much of the overscan area gets drawn. If you ask for a 320x200 screen with -b10, you actually get a 384x240 screen, with 320x200 of STIC in the middle, and extra border-color pixels outside.

 

There's two resolutions I need to worry about (four if you consider fullscreen vs. windowed): The resolution of the active STIC area (where MOBs, background tiles, etc are visible), and the resolution of the window or display that I deposit that on. The second of those two must be equal or larger than the first. If it's larger, it just gets flooded with the border color, and the active STIC area gets centered in it, much like a real TV would do.

 

Yeah, that's exactly what I thought it did. For what it's worth, I just did a few quick tests on various sizes and resolutions and it works great. it really gives a nice feel to the emulation to be able to see the border a bit thicker all around. I personally like 5%, which looks closer to what I see on my 32" Sony Trinitron.

 

Thanks again for keeping the tools alive and working on all these cool new features. I haven't yet played with the AVI generator, but that's another thing that looks to be exceedingly useful. :)

 

-dZ.

Edited by DZ-Jay
Link to comment
Share on other sites

Not a big deal either way, but I would expect the setting to refer to intellivision pixels (ie. scanlines). It seems to always do something different in full screen, can't figure it out. Always thought this setting would be helpfull for someone using a CRT with overscan.

Link to comment
Share on other sites

Not a big deal either way, but I would expect the setting to refer to intellivision pixels (ie. scanlines). It seems to always do something different in full screen, can't figure it out. Always thought this setting would be helpfull for someone using a CRT with overscan.

 

In full-screen mode, SDL gives me a list of supported resolutions. jzIntv tries to find the smallest resolution (in terms of 'fewest unused pixels') that will hold the display size you asked for. Hence the chatty little dialog:

gfx:  Searching for video modes near 640x480x8 with:
gfx:      Hardware surf, Single buf, Sync blit, Software pal, Full screen
gfx:  Considering 2880x1800... New best fit.  Diff = 4876800
gfx:  Considering 2560x1600... New best fit.  Diff = 3788800
gfx:  Considering 2048x1536... New best fit.  Diff = 2838528
gfx:  Considering 1920x1440... New best fit.  Diff = 2457600
gfx:  Considering 2048x1280... New best fit.  Diff = 2314240
gfx:  Considering 1600x1200... New best fit.  Diff = 1612800
gfx:  Considering 1680x1050... New best fit.  Diff = 1456800
gfx:  Considering 1600x1000... New best fit.  Diff = 1292800
gfx:  Considering 1344x1008... New best fit.  Diff = 1047552
gfx:  Considering 1440x900... New best fit.  Diff = 988800
gfx:  Considering 1280x960... New best fit.  Diff = 921600
gfx:  Considering 1344x840... New best fit.  Diff = 821760
gfx:  Considering 1280x800... New best fit.  Diff = 716800
gfx:  Considering 1024x768... New best fit.  Diff = 479232
gfx:  Considering 1024x640... New best fit.  Diff = 348160
gfx:  Considering 800x600... New best fit.  Diff = 172800
gfx:  Considering 800x500... New best fit.  Diff = 92800
gfx:  Considering 640x480... New best fit.  Diff = 0
gfx:  Selected:  640x480x8 with:

Most of the time it's well behaved, but some machines give me a truly wacky list to work with.

 

As for specifying it in scanlines... meh. That makes it even harder to work out what the correct window size should be.

Link to comment
Share on other sites

 

As for specifying it in scanlines... meh. That makes it even harder to work out what the correct window size should be.

 

I say, define a preset list as 0) "normal," 1) "medium," 2) "large," 3) "extra-large" (or something like that) with an option to override with a percentage, just like -zX does for display resolution. That way, the emulator can do what seems "right" for the selected resolution.

 

-dZ.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...