Motocross Championship/Hidden content

From Sega Retro

Back to: Motocross Championship.

Unused content

Error and JPEG conversion tool text

There is quite a bit of text relating to all sorts of errors, mostly, if not completely, relating to the JPEG technology used in this game.[1]


001E7738:

Insufficient memory (case %d)
Bogus free_small request
Image too wide for this implementation


001E7898:

Bogus free_small_sarray request


001E79D4:

Bogus free_small_barray request


001E7B8C:

Bogus access_big_sarray request
Virtual control array messed up


001E7D5C:

Bogus access_big_barray request


001E7F20:

Bogus free_big_sarray request


001E8074:

Bogus free_big_barray request


001E86D0:

Premature EOF in JPEG


001E88E0:

Skipping marker 0x%02x, length %u
Define Huffman Table 0x%02x
%3d %3d %3d %3d %3d %3d %3d %3d Bogus DHT counts
Bogus DHT index %d


001E8B84:

Define Arithmetic Table 0x%02x: 0x%02x
Bogus DAC index %d
Bogus DAC value 0x%x


001E8D14:

Define Quantization Table %d  precision %d
Bogus table number %d


001E8FA8:

Bogus length in DRI Define Restart Interval %u


001E90B4:

Unsupported JFIF revision number %d.%02d
Warning: unknown JFIF revision number %d.%02d
JFIF APP0 marker, density %dx%d  %d
with %d x %d thumbnail image
Warning: thumbnail image size does not match data length %u
Unknown APP0 marker (not JFIF), length %u
Short APP0 marker, length %u


001E9460:

Start Of Frame 0x%02x: width=%u, height=%u, components=%d
Empty JPEG image (DNL not supported)
Unsupported JPEG data precision
Component %d: %dhx%dv q=%d


001E9848:

Bogus SOS length
Start Of Scan: %d components
Invalid component number in SOS
c%d: [dc=%d ac=%d]


001E9ACC:

Start of Image


001E9B54:

Corrupt JPEG data: %d extraneous bytes before marker 0x%02x


001E9C6C:

Unexpected marker 0x%02x


001E9E34:

Not a FF file
Not a M_SOI file
Not a JPEG file
Unsupported SOF marker type 0x%02x
Unrecognized component IDs %d %d %d, assuming YCbCr


001EA100:

End of Image
Corrupt JPEG data: found 0x%02x marker instead of RST%d
At marker 0x%02x, recovery action %


001EA2CC:

Arithmetic coding not supported
Bogus sampling factors


001EA44C:

Empty JPEG file


001EA870:

Backing store not supported


001EA9FC:

Corrupt JPEG data: premature end of data segment


001EAB70:

Corrupt JPEG data: bad Huffman code


001EAC14:

Use of undefined Huffman table


001EAD44:

Corrupt JPEG data: %d extraneous bytes before marker 0x%02x


001EBAFD:

Bogus JPEG colorspace
Unsupported JPEG colorspace
Unsupported color conversion request


001EBD70:

Cannot quantize to fewer than %d colors


001EBF6C:

Cannot quantize more than %d color components
Cannot request more than %d quantized colors
Quantizing to %d = %d*%d*%d colors
Quantizing to %d colors


001ECF19:

Selected %d colors for quantization


001ED928:

Cannot request less than 8 quantized colors
Cannot request more than %d quantized colors


001EDAB4:

Should not get here!
2-pass quantization only handles YCbCr input


001EDC08:

Too many components for interleaved scan
I'm confused about the image width
Sampling factors too large for interleaved scan


001EE59C:

Didn't expect more than one scan


001EF81C:

CCIR601 upsampling not implemented yet
Fractional upsampling not implemented yet


Uncompiled code

Starting at 001F3001, an entire segment of uncompiled source code can be found within the game's data. The #ifdef PC and #ifdef MARS (the 32x's codename) lines and their associated comments led to speculation that the game was scheduled to receive a Windows PC port that never surfaced.[1] However, in April 2022, lead programmer Alexander G. M. Smith confirmed through a Sega Retro discussion post that this version was intended solely for internal development.[2]


to limit the # of lines that need to be drawn
	DrawScrollPlane(2, &CopyOfCamera2, camDX, lineCountForBackGround);
#endif
			
#endif

		DrawObjects (CopyOfCamera2.currentTile, NumberOfTiles, RoadDistances,
 		TileScreenPositionArray, SM);

	 DrawPlayerLapFlag(2);

#ifdef MARS
	if (SM == MASTER)
#endif
	{
	    Camera1Data = CopyOfCamera1;
	    Camera2Data = CopyOfCamera2;
	}


    }
    else /* Not split screen. */
    {
	CopyOfCamera1 = Camera1Data; /* Copy the whole structure. */

#ifdef DEBUGSPEED
	WindowWidth = SMALLWINDOWWIDTH;
	HalfWindowWidth = WindowWidth / 2;
	WindowX = SCREENWIDTH / 2 - HalfWindowWidth;
	WindowY = SCREENHEIGHT / 2 - SMALLWINDOWHEIGHT / 2;
	WindowHeight = SMALLWINDOWHEIGHT;
	WindowScaleFactor = 2;
#else
	WindowX = WINDOWXMARGIN;
	WindowWidth = SCREENWIDTH - (WINDOWXMARGIN * 2);
	HalfWindowWidth = WindowWidth / 2;
	WindowY = 4;
	WindowHeight = SCREENHEIGHT - (WINDOWYMARGIN * 2) - 4;
	WindowScaleFactor = 1;
#endif

#ifdef PC
	/* PC background is a full screen and must be drawn first. */
    drawBackground (FALSE, 0, 0, SM);
#endif

    NumberOfTiles = CalculateTileAndCameraPositions (TileScreenPositionArray,
    &CopyOfCamera1, &camDX, &camDY);

// .......... calc the difference in absolute heights between the bike and camera
	heightDiffForHorizon = 
		(CopyOfCamera1.SubjectBikeTileHeight + CopyOfCamera1.subjectBike->bottomY) -
		(CopyOfCamera1.absoluteTileHeight + CopyOfCamera1.yOffset);

	lineCountForBackGround = DrawGround (NumberOfTiles, RoadDistances,
	TileScreenPositionArray, SM);

#ifdef MARS
// .......... 32X background gets drawn after, to limit the # of lines that need to be drawn
	DrawScrollPlane(1, &CopyOfCamera1, camDX, lineCountForBackGround);
					
#endif
  	DrawObjects (CopyOfCamera1.currentTile, NumberOfTiles, RoadDistances,
  	TileScreenPositionArray, SM);

	DrawPlayerLapFlag(1);

#if 0
	ShowNum(heightDiffForHorizon);
#endif

#ifdef MARS
	if (SM == MASTER)
#endif
	{
	    Camera1Data = CopyOfCamera1;
	}

}


#if 0
#ifdef DEBUG
    /* Print out the debug value. */
    if (SM == MASTER)
    {
        char TempString [40];

        #ifdef DEBUGSPEED
        #else
        IntToAscii ((int) DebugValue, TempString, 10);
        PutString (0, 0, "Debug value:", WHITECOLOUR);
        PutString (120, 0, TempString, WHITECOLOUR);
        #endif
    }
#endif
#endif
}

void ShowNum(int num)
{
	char String1[100],String2[20];

   StringCopy (String1,"Number: ");
	IntToAscii (num, String2,10);

	StringCat(String1,String2);

#ifdef MARS
   ColorAreaNOCLIP(50,50,100,20,0,0);
#endif
   PutString(50,50,String1,100);
}

void ShowAbsoluteTileHeight(CameraDataRecord CopyOfCamera)
{
	char String1[100],String2[20];

   StringCopy (String1,"TileHeight: ");
	IntToAscii ((int) CopyOfCamera.absoluteTileHeight, String2,10);

	StringCat(String1,String2);
#ifdef MARS
	ColorAreaNOCLIP(90,30,100,20,0,0);
#endif
   PutString(10,30,String1,100);
}


void ShowSegment(void)
{
    trackTilePointer   CurrentTilePtr;
	char String1[100],String2[20];

    CurrentTilePtr = GetTrackTileForNumber (Camera1Data.currentTile);

    StringCopy (String1,"Segment # ");
	IntToAscii ((int) CurrentTilePtr->segmentNumber, String2,10);

	StringCat(String1,String2);

    PutString(10,30,String1,100);
}



/****************************************************************************
 * Draw the race track and objects on it to the screen.
 */

void Render (void)
{
    RenderTrackAndObjectsToRamScreen ();
    DisplayStatusInfo ();

	//ShowSegment();

sendBuffersToScreen ();
}

References


Motocross Championship

MCC Title.png

Main page | Hidden content | Development | Magazine articles | Video coverage | Reception | Region coding | Technical information


Sega 32X
Prototypes: 1994-10-12 | 10-17 | 10-18 | 10-19 | 10-20 | 10-24 | 10-28 | 11-01 | 11-02 B | 11-02 | 11-03 | 11-04 | 11-07 | 11-08 | 11-11