-
Content Count
1,676 -
Joined
-
Last visited
Posts posted by First Spear
-
-
Yes, that is a contradiction. But here it is, a minor (non-Intellivisionaries) podcast opened a little poll about consoles that I think will influence future coverage in one of their episodes. The Atari VCS is leading, and I think we can all agreee here how we feel about that....
So, could you add some ballots to give the Inty an edge? Come on, its not like you have anything better to do... 🙂
https://mobile.twitter.com/nudeclanpodcast/status/985908130662924288
-
1
-
-
Also a background polyphonic music track, please.
Got it. Sorry about the timing with this and your family situation.
Of course, a loop till 'c' equals -1Gladly I would have included comments[snip]
-
1
-
-
This appears to only display 005. It should display 005 006 007.
I think a While loop is needed to read the data, or again calculate the length in words (count commas?) of the data.
STACK_CHECK Mode 0 ,1 , 1 , 1 , 1 Wait CLS Thingypoin = 1 offset = 0 GOSUB readthingypoin While 1 : WEnd readthingypoin: Procedure IF offset >= Things(thingypoin + 1) - Things(thingypoin) THEN c = -1: RETURN c = PEEK(Things(thingypoin) + offset) Print Color 7, <3>c Print Color 7 , " " offset = offset + 1 End Things: DATA VARPTR Things0(0) DATA VARPTR Things1(0) DATA VARPTR Things2(0) DATA VARPTR ThingsEndMarker(0) Things0: DATA $01,$02,$03,$04 Things1: DATA $05,$06,$07 Things2: DATA $08,$09 ThingsEndMarker: Data $00Thanks.
My fault there. Forgot DATA is constant expression but cannot use (yet) expressions with VARPTR.
The correct code is this:
[snip] -
I am too anal-retentive to let this one go. When I build an IntyBASIC .bas, I often get a message that looks like
Warning: invalid extra characters in line 22
Warning: invalid extra characters in line 23
Warning: invalid extra characters in line 24
Warning: invalid extra characters in line 27
Warning: invalid extra characters in line 28
Warning: invalid extra characters in line 29But I cannot seem to find the characters. The programs work normally. I can't see spaces or control characters, and it does not appear everywhere in code, only on certain lines at certain times. But once the warning appears for a line, I cannot seem to get it to go away.
I'm running on Windoze 10, using UltraEdit and also Notepad.
Thanks.
-
I expect this to print the values 5 , 6 , 7 - but it does not, it only prints one value (incorrectly). Can you clue me in?
In Things_length, I understand that the first element of the array, which corresponds to the first Things0 label, is the size of data between Things1 and Things0. I understand the second element in the array, which corresponds to the Things1 label, is the size of data between Things2 and Things1. And the 3rd element.
Thanks.
Include "..\constants.bas" STACK_CHECK Mode SCREEN_CS , CS_BLUE , CS_BLUE , CS_BLUE , CS_BLUE Wait CLS Thingypoin = 1:offset = 0 GOSUB readthingypoinWhile 1 : WEndreadthingypoin: Procedure IF offset >= Things_length(thingypoin) THEN c = -1: RETURN c = Things0 (Things (thingypoin) + offset) Print Color CS_WHITE, <3>c Print Color CS_WHITE , " " offset = offset + 1 EndThings: DATA VARPTR Things0 (0)-VARPTR Things0 (0) DATA VARPTR Things1 (0)-VARPTR Things0 (0) DATA VARPTR Things2 (0)-VARPTR Things0 (0)Things_length: DATA VARPTR Things1(0) - VAPRTR Things0(0) DATA VARPTR Things2(0) - VAPRTR Things1(0) DATA VARPTR ThingsEndMarker(0) - VAPRTR Things2(0)Things0: DATA $01,$02,$03,$04 Things1: DATA $05,$06,$07 Things2: DATA $08,$09 ThingsEndMarker: Data $00
You misse[snip]
-
This code runs off in the weeds, says jzIntv. What did I miss?
Include "..\constants.bas" STACK_CHECK Mode SCREEN_CS , BORDER_BROWN , BORDER_BROWN , BORDER_BROWN , BORDER_BROWN Wait CLS Thingypoin = 0:offset = 0 GOSUB readthingypoin GOSUB readthingypoin Thingypoin = 1:offset = 0 GOSUB readthingypoin GOSUB readthingypoin Thingypoin = 2:offset = 0 GOSUB readthingypoin GOSUB readthingypoin readthingypoin: PROCEDURE c = Things0 (things (thingypoin) + offset) Print COLOR CS_RED, <3>c offset = offset + 1 END Things0: DATA 5,8,14,7 Things1: DATA 9,12,56,8 Things2: DATA 11,7,9,6 Things: DATA VARPTR Things0 (0)-VARPTR Things0 (0) DATA VARPTR Things1 (0)-VARPTR Things0 (0) DATA VARPTR Things2 (0)-VARPTR Things0 (0)Thingypoin = 0:offset = 0 GOSUB readthingy[snip]If you've different size arrays add another array for keeping lengths. -
Looking for how to add a second array to track the sizes, as they are all different length arrays.
Thanks!
Thingypoin = 0:offset = 0 GOSUB readthingypoin GOSUB readthingypoin Thingypoin = 1:offset = 0 GOSUB readthingypoin GOSUB readthingypoin Thingypoin = 2:offset = 0 GOSUB readthingypoin GOSUB readthingypoin readthingypoin: PROCEDURE c = thing0 (things (thingypoin) + offset) offset = offset + 1 END Things0: DATA 5,8,14,7 Things1: DATA 9,12,56,8 Things2: DATA 11,7,9,6 Things: DATA VARPTR Things0 (0)-VARPTR Things0 (0) DATA VARPTR Things1 (0)-VARPTR Things0 (0) DATA VARPTR Things2 (0)-VARPTR Things0 (0)If you've different size arrays add another array for keeping lengths. -
How? Can you throw out a quick example? I looked through all of the source .bas files I could find, and didn't see anything.
Thanks!
In fact you can use DATA VARPTR for this.
-
Yes, that is correct. I want to access the values based on their position in ROM from Thing0.
Thanks.
@intvnut, I believe ultimately he wants to access the array by indirection, rather than by name. I think the whole "skip through Thing0 to get to Thing2" is to not have to hard-code a pointer to Thing2.
@First Spear, is this correct?
Alternatively, if the intention is to access one of the arrays indirectly (that is, having a variable which tells you which of the "thingx" you need), then you'll probably need an index table with pointers to the lists.
(Note that I am not sure if the code below is legal IntyBASIC code, so I hope someone can correct it if not...)
Thing0: DATA 0, 1, 2, 3 Thing1: DATA 4, 5 Thing2: DATA 6, 7, 8 Thing3: DATA 9, 10 ThingTable: DATA Thing0, Thing1, Thing2, Thing3
You then index in "ThingTable" for the base pointer of your array, and then use that for your loops.
-dZ.
-
I want to read the values
$9 , $39 , $99
That are at Label Thing2. But I do not want to go to Thing2 directly. I want to go to Thing0, and then retrieve all of the data between the Label of Thing2 and Thing3, which is $9,$39,$99.
My actual code has a lot of things, so instead of going after them by name, I want to go to them by position in the ROM, based on a single known label. That way, when I have "Thing16", I can still use the coding logic of going to the first Label and then counting forward until I get to the right one.
I am not afraid of using VARPTR or PEEK (if you guys show me how to do it <grin>).
Thanks.
I'm not sure I understand your question. Or rather, I understood the first sentence but none of what followed.
But, I can say you can use array syntax to access any of these data tables randomly. You do not need to resort to VARPTR or PEEK. For example, Thing2(0), Thing2(1) and Thing2(2) will return the values $9, $39, $99.
I don't quite grok how Thing2 is "the second offset, n[snip]
-
I want to load the 3 values at label Thing2. But I do not want to RESTORE Thing2, I want to RESTORE to Thing0 and then count Labels until I reach Thing2, and then read that data.
Put another way, I want to read data at the 2nd offset from Thing0. I do not want to read data from the 1st or 3rd offset
What kind of code (VARPTR?) would I need to do that?
Thanks!
Thing0: Data $12 , $14 , $393 , $292 Thing1: Data $393 , $30 Thing2: Data $9 , $39 , $99 Thing3: Data $17 , $40
-
I needed a re-re-read. At a different time of the day...
I get it now.So... How to modify the code in the first post to programatically set the Color Stack before writing one of the new background-color tiles?
All of your requirements and constraint understanding is 100% right.
The tiles are static, and do not move. They just change on a key press, and change back, in those BACKTAB locations only.
The image above is accurate, stuff with a black background is all over, and BACKTAB 118 and 119 change.
Thanks.
First Spear, I think I may be missing something from your explanations and that perhaps my descriptions are not following what you intend to do. If so, I apologize.
Here's my understanding of the requirements and constraints. Please correct me if any of it is wrong.- You plan to use the Color Stack.
- MOBs are reserved for other purposes, so they are not available for the background scene.
- The "base" background color is Black, that is, most of the screen background is going to be a black field.
- There are two adjacent tiles that need to be painted with a background special color.
- The foreground color of these special tiles will be used to draw some scene details (i.e., they won't be blank of a single solid color).
- Depending on game state, the special background color for the adjacent tiles is either:
- Orange
- Cyan
- Blue
- The special colored tiles can be only one of those special colors at a time.
- There may be more than one set of special colored tiles but they will always be:
- Each composed of only adjacent tiles (i.e., contiguous tiles in the BACKTAB array)
- All sets of the same special color when visible
Here are some questions I have for you, to better understand your requirements:
- Are those special tiles in your mock-up screenshots the only place where you need to change the background color?
- Are those special tiles static (i.e., they are painted then disappear, but do not move to different positions)?
- Can you provide a quick-and-dirty mock up of an actual background scene, with some of the foreground detail?
-dZ.
-
Slightly OT - would it be possible to do something like a "dual programmer interview"? The stuff the BSR did on the "1337 Lounge" in 2013 (http://intvprime.com/community-1337-lounge-chat/) was great because multiple folks played off of each other. The show has always had great interviews of single programmers (you guys have a real talent for it) but a new dimension for 2018 could be asking questions of 2 people at a time. I'm not sure which game would have two BSRs you could interview at a time, and which game would meet your planned coverage schedule, but still....
-
From the Department of First Spear Ideas that He wants Someone Else to Implement:
It would be cool if we had a 36 high, super-long printable compendium if releases, the 125 plus homebrew and independents. Something I could take to a print shop and run to wall-mount.
It looks like the VCS family is doing a book:
http://www.vintageisthenewold.com/atari-2600-homebrew-games-getting-new-compendium-soon/
-
Why wouldn't the stack be Black-Orange-Cyan-Darkblue?
Normally, the special tiles do not display, there is white foreground and black background content in that space.
The screen area is normally all black background everywhere.
On a keypress, I do some logic and determine if the 2-tile-area should have a black background or orange background or cyan background or darkblue background. If the background was black before, the calculation will determine if the background should be black or orange and then draw the shape across the 2 tiles using the new (or current) color.
I think I get your explanation, but not how to implement it in IntyBASIC.
Thanks.
If the changed background colours will always only be one of your 4 colours (as it appears from your samples above), then you don't need to complicate matters too much. You can just set the advance bits of those cards and then just update the color stack itself.
You see, if a backtab card has the advance flag set so as to get the second color stack slot, then updating the second color stack slot in the STIC will make that card immediately change colours.
Does this make sense?
From your sample images above, it seems to me that your color stack should be set to:
- 0x0 (Black)
- 0xA (Orange)
- 0x0 (Black)
- 0xA (Orange)
You will paint most of the screen with Black background (#1), and when you get to your special cards, you set the advance flag (#2). The background is now Orange. You paint your two cards with the new Background and set the advance flag (#3) on the third card afterwards. The background is now Black again, and you'r done: paint the rest of the screen with that background color.
Note that the stack is ready with slots #3 and #4 to do the same thing again on the same screen, if you need to.
Now, the user presses a key, so you update your color stack to the following:
- 0x0 (Black)
- 0x9 (Cyan)
- 0x0 (Black)
- 0x9 (Cyan)
Now, automatically, and without any further effort from you, the cards with the advance flag flag on slot #2 will now change from Orange to Cyan.
Does this make sense?
I guess I am not picturing your screen usage correctly, so it's hard for me to offer more details.
-dZ.
-
Wow. The PDA has returned: https://uncrate.com/planet-gemini-pda/
This has made me think it would be useful if the left part of the keyboard was a disc/d-pad, and then we could run jzIntv on it and have portable Intellivision games, kind of like a rebirth of Inty Lives on the DS.
Has anyone seen any small portable computers that would make good "jzIntv Stations"?
Thanks.
-
We know that there was Intellivision hardware sold until 1990 (1991?). But who was buying them over the years, where were they located and what were they paying, and why when more powerful systems were on the market?
Could this be an Intellivisionaries Investigatory segment?
-
Here are the 4 views that I want to show, so the color stack will be 0,9,A,1
The backcolor of the rest of the screen is always 0, but I want to display one of the 4 views. Please note that there are two adjacent tiles that make up the graphic representation.
Thanks!
Well, that doesn't sound so bad. Just to be sur[snip]
-
No PMs needed yet. When it's open, there will be a full announcement on AA and Twitter and Intv Prime website. Just wanted to let you know the jokers at Intv Prime are moving along with this thing.
-
3
-
-
I want to dive deep, if you're OK with continuing to look at this...
The colors I actually want to use are 0,9,A,1 for the background. The whole screen is drawn with lots of foreground colors but only black background, so starting the stack at "0" for IntyColor is cool. I will cycle through those colors in order (no need to skip).
There are two tiles where the color needs to have a background change, BACKTAB tiles 118 and 119, the center-right side of the screen. If there is a problem doing those two tiles, then doing 116 and 117 are fine. The entire rest of the screen must always retain the black background.
The scenario is the user pushes a bottom-side button, and the two tiles display with a new foreground+background color, and pressing the button again makes the tiles revert back to having any color with a black background. Think of displaying the cards in Poker & Blackjack, where normally the back is shown unless disc is pushed then cards "flip". But for my game mechanic the idea is not to flip unless the button is pushed again.
When button is pushed, a variable is checked
if var between 0 and 1, use background color of 0
If var between 1 and 2, use background color of 9
If var between 3 and 4, use background color of A
If var between 5 and 6, use background color of 1
if var > 6, var = 0
This is turn-based, not high-action, so it's OK to blank out tiles with black blocks first if a redraw needs to occur.
All ideas appreciated!
Thanks.
Unfortunately, using Color Stack mode, the on[snip]
-
I am using Color Stack mode, have an image created with intycolor all black background. Placing other images on this base image also with IntyColor -s0000 (all black background, no Stack change).
I want to place a white-on-blue image in a section of the screen, then replace it with white-on-gray, then replace it with yellow-on-blue. Each of these images was created with the following settings (please note that the color conversion is not quite correct). Each image is 16px wide and 8px high.
IntyColor commands:
intycolor -b -o20 -s0000 cstestback.bmp cstestback.bas cstestback intycolor -b -o20 -s7777 whiteonblue.bmp whiteonblue.bas whiteonblue intycolor -b -o20 -s7777 whiteongray.bmp whiteongray.bas whiteongray intycolor -b -o20 -saaaa yellowonblue.bmp yellowonblue.bas yellowonblue
Below is the code that makes the background, with the shapes commented-out at the bottom.
How can I place these images properly on my all-black-background screen?
Thanks.
REM stub for showing image INCLUDE "constants.bas" MODE 0,0,0,0,0 WAIT DEFINE 20,16,cstestback_bitmaps_0 WAIT DEFINE 36,16,cstestback_bitmaps_1 WAIT DEFINE 52,9,cstestback_bitmaps_2 WAIT SCREEN cstestback_cards loop: GOTO loop ' 41 bitmaps cstestback_bitmaps_0: DATA $0000,$FF00,$0000,$0E03 DATA $0000,$FF01,$601C,$0080 DATA $0000,$0080,$0000,$0000 DATA $0000,$0603,$1F0C,$0000 DATA $E038,$0080,$FC03,$0000 DATA $0000,$0000,$00FF,$0100 DATA $0000,$0000,$07FF,$C038 DATA $0000,$0701,$0000,$0000 DATA $700E,$FFC0,$0000,$0000 DATA $0000,$E01F,$0000,$1C03 DATA $0000,$01FF,$300E,$00C0 DATA $0000,$80C0,$0000,$0000 DATA $0000,$0000,$0000,$0F01 DATA $0000,$0000,$0000,$FFFE DATA $0000,$0000,$0000,$C000 DATA $0701,$000F,$0000,$0000 cstestback_bitmaps_1: DATA $00E0,$00FF,$0000,$0000 DATA $0000,$00FF,$0000,$0000 DATA $0000,$00FF,$0100,$1806 DATA $0000,$18FE,$8060,$0000 DATA $0000,$0100,$0301,$0707 DATA $7F1F,$FFFF,$FFFF,$FFFF DATA $FFFF,$FFFF,$FFFF,$FFFF DATA $F8E0,$FEFC,$FFFE,$FFFF DATA $0000,$0000,$0000,$8080 DATA $0100,$0C03,$000F,$0000 DATA $8060,$0000,$00FF,$0000 DATA $0000,$0300,$00FC,$0000 DATA $0000,$FF00,$0100,$0806 DATA $0000,$E000,$8040,$0000 DATA $0F07,$0F0F,$0F0F,$0F0F DATA $C080,$C0C0,$C0C0,$C0C0 cstestback_bitmaps_2: DATA $0100,$301E,$00FF,$0000 DATA $8070,$0000,$00FF,$0000 DATA $0000,$0000,$0080,$0000 DATA $070F,$0707,$0103,$0001 DATA $FFFF,$FFFF,$FEFF,$FCFE DATA $80C0,$8080,$0000,$0000 DATA $1F7F,$010F,$0000,$0000 DATA $FFFF,$FEFF,$0000,$0000 DATA $E0F8,$00C0,$0000,$0000 REM 20x12 cards cstestback_cards: DATA $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DATA $0000,$0000,$066B,$08A3,$08AB,$08B3,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DATA $0000,$0000,$08BB,$08C3,$08CB,$08D3,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DATA $0000,$0000,$0000,$08DB,$08E3,$066B,$066B,$066B,$066B,$08EB,$08F3,$08FB,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DATA $0000,$0000,$0000,$0000,$1902,$190A,$1912,$0000,$091B,$0923,$092B,$0933,$093B,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DATA $0000,$0000,$0000,$1942,$194A,$1952,$195A,$1962,$0000,$0000,$096B,$0973,$097B,$066B,$0983,$098B,$0000,$0000,$0000,$0000 DATA $0000,$0000,$0000,$1992,$1952,$1952,$1952,$199A,$0000,$0000,$0000,$0000,$0000,$09A3,$09AB,$0673,$0673,$0673,$09B3,$0000 DATA $0000,$0000,$0000,$19BA,$1952,$1952,$19C2,$19CA,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DATA $0000,$0000,$0000,$0000,$19D2,$19DA,$19E2,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DATA $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DATA $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 DATA $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000 ' REM stub for showing image ' INCLUDE "constants.bas" ' MODE 0,7,7,7,7 ' WAIT ' DEFINE 20,2,whiteonblue_bitmaps_0 ' WAIT ' SCREEN whiteonblue_cards,0,0,2,1,2 ' loop: ' GOTO loop ' ' ' 2 bitmaps ' whiteonblue_bitmaps_0: ' DATA $F0FF,$F0F0,$F0F0,$FFF0 ' DATA $07FF,$0707,$0707,$FF07 ' ' REM 2x1 cards ' whiteonblue_cards: ' DATA $18A1,$18A9 ' ' REM stub for showing image ' INCLUDE "constants.bas" ' MODE 0,10,10,10,10 ' WAIT ' DEFINE 20,2,yellowonblue_bitmaps_0 ' WAIT ' SCREEN yellowonblue_cards,0,0,2,1,2 ' loop: ' GOTO loop ' ' ' 2 bitmaps ' yellowonblue_bitmaps_0: ' DATA $F0FF,$F0F0,$F0F0,$FFF0 ' DATA $07FF,$0707,$0707,$FF07 ' ' REM 2x1 cards ' yellowonblue_cards: ' DATA $18A1,$18A9 ' ' REM stub for showing image ' INCLUDE "constants.bas" ' MODE 0,7,7,7,7 ' WAIT ' DEFINE 20,2,whiteongray_bitmaps_0 ' WAIT ' SCREEN whiteongray_cards,0,0,2,1,2 ' loop: ' GOTO loop ' ' ' 2 bitmaps ' whiteongray_bitmaps_0: ' DATA $F0FF,$F0F0,$F0F0,$FFF0 ' DATA $07FF,$0707,$0707,$FF07 ' ' REM 2x1 cards ' whiteongray_cards: ' DATA $18A6,$18AE
-
I had a kind of preprocessor building .bas files once, stopped messing with it over a year ago, was thinking that there might be a better/smarter way to do it, without needing a "preprocessor".
Thanks.
I suppose one could wrap together your own preprocessor, a batch script that generates the temporary BAS file which the compiler gets to work with. I don't know if it is worth the work, perhaps if you have very complex projects. I was also looking for #ifdef before but realized that IntyBASIC doesn't have such features and perhaps doesn't really need it anyway?
-
I have a procedure in my main .bas program, which includes another .bas file with a same-named Procedure.
I'd like to move that same-named external procedure to a 3rd .bas, and only include it in under certain conditions at compile time.
Is anyone dealing with a similar situation? Is there a way to conditionally include/exclude Procedures any other way?
Thanks.
-
Rumor has it that Intv Prime is considering allowing some people to "donate early" to the game, to get into the game.
There are a few places for see NPCs, so instead of filling them with generically represented characters, they would be represented by people that pay to be stamped in the game. Since the release will be charityware with no profits made, Intv Prime is looking at ways to defray some of the overhead with production costs by letting a few people be "immortalized" in a cartridge. For example, instead of buying equipment from "The Merchant", wouldn't it be cool to buy equipment from "The Merchant Cee Marto"?

-
5
-






IntyBASIC Restore by Position/Offset?
in Intellivision Programming
Posted
My thin understanding is that all of the ROM is in one contiguous block of Words, and the labels can be thought of as pointers. The game I am working has a lot of graphics and sounds, and I am looking for a way to add and access them dynamically without writing specific code. For example, if I have 6 positions for an animation, and each position is the same number of Words in size, then instead of saying 'show position 1' then 'show position 2' etc, I am looking for the ability to say 'animation has 6 positions. show the stuff from offset 0, then offset 1, offset 2, etc' I can control with a loop. When I increase the number of frames of animation, I can add them to the end and change the counter.
For 6 positions, it's a lot of overhead. But with 15 things with positions, the tradeoff gets easier. Same with having dozens of sounds.
HTH.