1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-11-26 06:49:19 +00:00

Tweak Atari 2600 visualizer

Changed "row duplication" to a straight "row thickness".  Feels more
intuitive.
This commit is contained in:
Andy McFadden 2019-12-06 17:54:18 -08:00
parent 5635a1e33a
commit 3c541089a7
3 changed files with 14 additions and 15 deletions

View File

@ -36,7 +36,7 @@ namespace RuntimeData.Atari {
private const string P_OFFSET = "offset"; private const string P_OFFSET = "offset";
private const string P_HEIGHT = "height"; private const string P_HEIGHT = "height";
private const string P_ROW_DUP = "rowDup"; private const string P_ROW_THICKNESS = "rowThickness";
private const string P_REFLECTED = "reflected"; private const string P_REFLECTED = "reflected";
private const int MAX_HEIGHT = 192; private const int MAX_HEIGHT = 192;
@ -57,8 +57,8 @@ namespace RuntimeData.Atari {
P_OFFSET, typeof(int), 0, 0x00ffffff, VisParamDescr.SpecialMode.Offset, 0), P_OFFSET, typeof(int), 0, 0x00ffffff, VisParamDescr.SpecialMode.Offset, 0),
new VisParamDescr("Height", new VisParamDescr("Height",
P_HEIGHT, typeof(int), 1, 192, 0, 1), P_HEIGHT, typeof(int), 1, 192, 0, 1),
new VisParamDescr("Row duplication", new VisParamDescr("Row thickness",
P_ROW_DUP, typeof(int), 0, 10, 0, 3), P_ROW_THICKNESS, typeof(int), 1, 20, 0, 4),
new VisParamDescr("Reflected", new VisParamDescr("Reflected",
P_REFLECTED, typeof(bool), 0, 0, 0, false), P_REFLECTED, typeof(bool), 0, 0, 0, false),
}), }),
@ -143,11 +143,12 @@ namespace RuntimeData.Atari {
int offset = Util.GetFromObjDict(parms, P_OFFSET, 0); int offset = Util.GetFromObjDict(parms, P_OFFSET, 0);
int height = Util.GetFromObjDict(parms, P_HEIGHT, 1); int height = Util.GetFromObjDict(parms, P_HEIGHT, 1);
int rowDup = Util.GetFromObjDict(parms, P_ROW_DUP, 3); int rowThick = Util.GetFromObjDict(parms, P_ROW_THICKNESS, 4);
bool isReflected = Util.GetFromObjDict(parms, P_REFLECTED, false); bool isReflected = Util.GetFromObjDict(parms, P_REFLECTED, false);
if (offset < 0 || offset >= mFileData.Length || if (offset < 0 || offset >= mFileData.Length ||
height <= 0 || height > MAX_HEIGHT) { height <= 0 || height > MAX_HEIGHT ||
rowThick <= 0 || rowThick > MAX_HEIGHT) {
// the UI should flag these based on range (and ideally wouldn't have called us) // the UI should flag these based on range (and ideally wouldn't have called us)
mAppRef.ReportError("Invalid parameter"); mAppRef.ReportError("Invalid parameter");
return null; return null;
@ -160,10 +161,8 @@ namespace RuntimeData.Atari {
return null; return null;
} }
int rowHeight = rowDup + 1;
// Each half of the playfield is 20 bits wide. // Each half of the playfield is 20 bits wide.
VisBitmap8 vb = new VisBitmap8(40, height * rowHeight); VisBitmap8 vb = new VisBitmap8(40, height * rowThick);
SetPalette(vb); SetPalette(vb);
for (int row = 0; row < height; row++) { for (int row = 0; row < height; row++) {
@ -177,10 +176,10 @@ namespace RuntimeData.Atari {
int fwd = RevBits(rev, 20); int fwd = RevBits(rev, 20);
// Render the first part of the line forward. // Render the first part of the line forward.
RenderHalfField(vb, row * rowHeight, rowHeight, 0, RenderHalfField(vb, row * rowThick, rowThick, 0,
fwd, Color.White); fwd, Color.White);
// Render the second half forward or reversed, in grey. // Render the second half forward or reversed, in grey.
RenderHalfField(vb, row * rowHeight, rowHeight, HALF_WIDTH, RenderHalfField(vb, row * rowThick, rowThick, HALF_WIDTH,
isReflected ? rev : fwd, Color.Grey); isReflected ? rev : fwd, Color.Grey);
} }
return vb; return vb;

View File

@ -152,8 +152,8 @@ generator works for data stored in a straightforward fashion.</p>
multiple entries following each other. Specify the number of multiple entries following each other. Specify the number of
3-byte entries as the height. 3-byte entries as the height.
Since most playfields aren't the full height of the screen, Since most playfields aren't the full height of the screen,
it will tend to look squashed. Use the "row duplication" feature it will tend to look squashed. Use the "row thickness" feature
to repeat each row N times to make it look more like it should.</li> to repeat each row N times to adjust the proportions.</li>
</ul> </ul>
</div> </div>

View File

@ -60,12 +60,12 @@
"68":{ "68":{
"Items":[{ "Items":[{
"Tag":"Black Maze 3","VisGenIdent":"atari2600-playfield","VisGenParams":{ "Tag":"Black Maze 3","VisGenIdent":"atari2600-playfield","VisGenParams":{
"offset":68,"height":7,"rowDup":3,"reflected":false}}]}, "offset":68,"height":7,"rowThickness":4,"reflected":false}}]},
"89":{ "89":{
"Items":[{ "Items":[{
"Tag":"Red Maze (bottom)","VisGenIdent":"atari2600-playfield","VisGenParams":{ "Tag":"Red Maze (bottom)","VisGenIdent":"atari2600-playfield","VisGenParams":{
"offset":89,"height":7,"rowDup":3,"reflected":true}}]}, "offset":89,"height":7,"rowThickness":4,"reflected":true}}]},
"110":{ "110":{
"Items":[{ "Items":[{
"Tag":"Castle Def","VisGenIdent":"atari2600-playfield","VisGenParams":{ "Tag":"Castle Def","VisGenIdent":"atari2600-playfield","VisGenParams":{
"offset":110,"height":7,"rowDup":3,"reflected":true}}]}}} "offset":110,"height":7,"rowThickness":4,"reflected":true}}]}}}