The Nintendo Gigaleak preserves a separate Super Mario Kart art workspace under other/NEWS/テープリストア/NEWS_04/home/sugiyama/CAR.
Unlike the main source tree, this directory is almost entirely art-side production material.
It is a flat workspace full of screen layouts, character graphics, palette files, object art, and raw Mode 7 maps, with a huge number of .BAK revisions still preserved beside the current files.
The CAR folder is a self-contained artist workspace with 415 files and no subdirectories.
That flat layout makes it feel less like a cleaned release archive and more like an active working branch copied directly from one developer’s home directory.
Even though the directory is flat, the file families split into a few clear production buckets:
home/sugiyama/CAR is a flat artist workspace rather than a nested project tree, but the naming still clusters naturally into UI, object, course-family, and raw map groups.
The file types break down like this:
| Type | Count | What it preserves |
|---|---|---|
.SCR |
148 | Screen layouts and tile/screen arrangement data |
.CGX |
38 | Character or tile graphics |
.COL |
18 | Palette or color data |
.OBJ |
8 | Object-layout or sprite-object data |
.MD7 |
3 | Raw 32 KB Mode 7 maps |
.DAT |
2 | Miscellaneous data files |
.BAK |
198 | Backup revisions of the same art files |
That .BAK count is one of the best details in the whole directory.
Nearly half the workspace is revision history, which means this is not just “the final art.”
It is a preserved trail of iterative screen and asset work.
This page is based on Gigaleak NEWS_04 home/sugiyama/CAR/, part of Tadashi Sugiyama’s workspace.
The project identification is unambiguous from the filenames alone. This is clearly Super Mario Kart material, with direct references to:
TITLECAR-SELECTMAP-SELECTRESULTJUGEMDOKANPOLESLOTC.MD7, CCC1.MD7, and S.MD7This workspace preserves several different layers of Mario Kart’s visual production at once:
That combination makes it a very good companion to the source-code leak.
The code explains how menus, scenes, and object packs were used at runtime, while CAR preserves the workstation-side assets those systems were built around.
Even without a full decoder, the fixed file sizes and the first few words of each file type already tell us quite a lot about what this workspace was storing.
All 148 .SCR files are exactly 8,960 bytes.
That is too regular to be arbitrary exports, and the contents look much more like structured 16-bit entries than raw bitmap data.
A few examples make the pattern clearer:
| File | First 16-bit words |
|---|---|
TITLE.SCR |
0x00D9 repeated |
CAR-SELECT.SCR |
0x044B repeated |
RESULT.SCR |
0x3CA3 repeated |
DOKAN.SCR |
0x1C00, 0x1C01, 0x5C01, 0x5C00 repeating |
BLACK.SCR |
starts with 0x0000 repeated |
DOKAN.SCR is especially helpful because its opening pattern looks exactly like a small repeating tile arrangement with flipped or variant entries, not like graphics data.
So the safest reading is that .SCR stores screen-layout or tile-layout tables built out of 16-bit words.
What is slightly unusual is the total size.
At 8,960 bytes, each .SCR file contains 4,480 little-endian words, which is much larger than one simple SNES background tilemap.
That suggests these are probably workstation-side screen/layout files rather than raw one-to-one PPU dumps.
The .OBJ side is just as regular.
All 8 .OBJ files are exactly 13,568 bytes, and the opening bytes in files like TITLE.OBJ, JUGEM.OBJ, POLE.OBJ, CAR.OBJ, and OBJ-MOJI.OBJ fall into repeated small record-like patterns rather than long graphic runs.
The first few 16-bit words in CAR.OBJ, for example, look like this:
0x0080, 0xF8F8, 0xB333, 0x0080, 0xF0F8, 0xB233, 0x0080, 0xE8F8
That does not look like tile art. It looks much more like repeated entries describing object positions, tile references, or sprite attributes.
Looking at the first few dozen words across the live object files makes the structure a bit clearer.
JUGEM.OBJ, POLE.OBJ, CAR.OBJ, CAR-TEST.OBJ, OBJ-MOJI.OBJ, and OBJ-MOJI-ENG.OBJ all break very naturally into repeating three-word groups:
| File | First four 3-word groups |
|---|---|
JUGEM.OBJ |
[0x0080, 0xED00, 0x0C30], [0x0080, 0xEDF8, 0x0E30], [0x0080, 0xEDF0, 0x0E30], [0x0080, 0x08F8, 0x273A] |
POLE.OBJ |
[0x0080, 0x18F8, 0x333A], [0x0080, 0x10F8, 0x323A], [0x0080, 0x18F0, 0x233A], [0x0080, 0x10F0, 0x223A] |
CAR.OBJ |
[0x0080, 0xF8F8, 0xB333], [0x0080, 0xF0F8, 0xB233], [0x0080, 0xE8F8, 0xB133], [0x0080, 0xE0F8, 0xB033] |
OBJ-MOJI.OBJ |
[0x0080, 0x30E8, 0xB538], [0x0080, 0x28E8, 0xB438], [0x0080, 0x30E0, 0xB338], [0x0080, 0x28E0, 0xB238] |
That makes them look much less like generic binary blobs and much more like compact object-entry tables.
The repeated leading 0x0080 in active runs is especially suggestive.
It looks like some kind of shared object flag or control value sitting beside coordinate and tile/attribute words.
The files also contain a lot of empty space.
If you walk the whole file as three-word groups, most entries start with 0x0000, while the active groups tend to start with 0x0080.
So the simplest working model is:
That matches the role of these files nicely. An artist-side object workspace would benefit from exactly this kind of fixed-record format, because it makes it easy to keep adding, deleting, and rearranging sprite or object placements without repacking the whole file every time.
TITLE.OBJ still belongs to the same broad family, but it looks a little less regular than the object-heavy gameplay files.
Its opening words are:
0x0080, 0xE8E8, 0xB430, 0x0000, 0xE0E0, 0x8A3C, 0x0000, 0xE8E0, 0x893C
That alternating 0x0000 pattern appears much earlier than it does in files like CAR.OBJ or POLE.OBJ.
So TITLE.OBJ may be using the same general object-layout container while storing title-screen object groups or layers in a slightly different arrangement from the gameplay-facing files.
The same pattern also explains why OBJ-MOJI.OBJ matters.
If the MOJI banks are reusable glyph graphics, then the OBJ-MOJI files look like object-layer text placements built on top of those glyphs.
The palette and graphics banks are even easier to classify because their sizes cluster so neatly.
| Type | Sizes seen | Reading |
|---|---|---|
.COL |
1,024 bytes only |
palette or color tables |
.CGX |
17,664, 34,048, 65,792 bytes |
fixed-size character/tile graphics banks |
The .COL files also look like little-endian color words rather than text or layout data.
For example, TITLE.COL opens with values like 0x4BBF and repeated 0x7FFF words, which is exactly the kind of pattern you would expect from packed color entries.
The .CGX files, by contrast, read like large binary graphics banks.
MOJI.CGX begins with dense nonzero bit patterns, END-MOJI.CGX mixes visible glyph-like data with large zero runs, and the huge BG-ITEM.CGX bank extends that same pattern at a much larger scale.
Taken together, the fixed sizes suggest a tidy production format:
.SCR for screen or tile-layout tables.OBJ for object or sprite placement data.COL for color tables.CGX for character and tile graphics banksThat also helps explain why the folder sits so neatly beside the source-code leak.
The MarioKart.md page mostly shows the runtime and build side of Super Mario Kart, while CAR preserves the editor-facing asset side that would have fed those systems before data was packed into the final game.
The .BAK side of the workspace is large enough to be worth reading as its own preservation layer, not just as a footnote.
Across the whole folder there are 198 backup files, and they split like this:
| Extension | Count |
|---|---|
.SCR.BAK |
138 |
.CGX.BAK |
38 |
.COL.BAK |
18 |
.OBJ.BAK |
4 |
That skew matters. Most of the revision history sits in screen layouts rather than palettes or object-layout files. So the CAR workspace looks like a branch where the screen compositions and course-layout screens were being revised more often than the underlying object containers.
The recognizable front-end groups all keep meaningful backup trails:
| Family | Backup files preserved |
|---|---|
TITLE* |
11 |
CAR-SELECT* |
5 |
MAP-SELECT* |
4 |
RESULT* |
4 |
D-POINT* |
4 |
REGI* |
2 |
MOJI* |
2 |
SELECT* |
2 |
OBJ-MOJI* |
3 |
The TITLE branch is the standout.
Its backups cover not just screen layouts, but also graphics, palette, and object-form data:
TITLE.SCR.BAKTITLE.CGX.BAKTITLE.COL.BAKTITLE.OBJ.BAKTITLE-ENG.SCR.BAKTITLE-ENG.CGX.BAKTITLE-ENG2.SCR.BAKTITLE-ENG2.CGX.BAKTITLE-OBJ.CGX.BAKTITLE2.SCR.BAKTITLE2.COL.BAKThat is a very strong sign that the title presentation was being revised as a layered stack rather than as one flattened asset.
The densest .BAK trail sits in the environment families rather than the menus:
| Family | Backup files preserved |
|---|---|
C* |
26 |
B* |
25 |
D* |
24 |
S* |
23 |
H* |
19 |
G* |
16 |
K* |
16 |
W* |
12 |
STAR* |
8 |
Those are not just one-off backups either. Many of the families preserve the same kind of internal pattern:
.SCR screens like C1-0.SCR.BAK to C1-3.SCR.BAKC1.CGX.BAKC1.COL.BAKC1-B.CGX.BAK and C1-B.SCR.BAKSo the backup trail makes the course families look less like a few static asset exports and more like real production sets that were being revised screen by screen.
The object-side families do keep backups, just not at the same density:
JUGEM.CGX.BAK and JUGEM.OBJ.BAKDOKAN.CGX.BAK, DOKAN.COL.BAK, and DOKAN.SCR.BAKPOLE.CGX.BAKSLOT.CGX.BAKHATA.SCR.BAKCAR.CGX.BAKOBJ-MOJI.OBJ.BAK, OBJ-MOJI-ENG.OBJ.BAK, and OBJ-MOJI.CGX.BAKThat lighter trail suggests the object assets were still being worked on, but the heaviest churn was happening in the menu layouts and course-family screens.
The backups are also uneven in a useful way.
Some pairs are identical, like MARK.CGX and MARK.CGX.BAK, while others differ significantly, like MOJI.CGX versus MOJI.CGX.BAK or TITLE.SCR versus TITLE.SCR.BAK.
That mix is exactly what you would expect from a live workspace snapshot.
Some assets had stabilized, some were still in motion, and the preserved .BAK trail caught both states at once.
The most immediately recognizable part of the folder is the front-end material. This is not just one title screen and one menu mockup. It is a full set of menu-facing assets with revisions and localized alternatives.
The clearest examples are:
TITLE.SCR, TITLE.CGX, TITLE.COL, TITLE.OBJTITLE-ENG.SCR, TITLE-ENG.CGXTITLE-ENG2.SCR, TITLE-ENG2.CGXTITLE2.SCR, TITLE2.COL, TITLE2B.SCR, TITLE3.SCRCAR-SELECT.SCR, CAR-SELECT.COL, CAR-SELECT2.SCR, CAR-SELECT3.SCRCAR-SELECT2-ENG.SCRMAP-SELECT.SCR, MAP-SELECT.COL, MAP-SELECT2.SCRMAP-SELECT-ENG.COLREGI.SCR, REGI.COLRESULT.SCR, RESULT2.SCRRESULT-ENG.SCR, RESULT2-ENG.SCRD-POINT.SCR, D-POINT2.SCRD-POINT-ENG.SCR, D-POINT2-ENG.SCRThat is a strong sign that the folder was being used for actual menu and UI production, not only loose graphic experiments. The English variants are especially useful because they show localization work happening directly in the art workspace rather than being bolted on somewhere else later.
The TITLE family is especially rich because it preserves not only one final screen, but multiple layers and revisions of the title presentation:
TITLE.SCR, TITLE.CGX, TITLE.COL, TITLE.OBJTITLE-OBJ.CGXTITLE-ENG.SCR, TITLE-ENG.CGXTITLE-ENG2.SCR, TITLE-ENG2.CGXTITLE2.SCR, TITLE2.COLTITLE2-ENG.SCRTITLE2B.SCRTITLE3.SCRThat is a strong sign that the title screen was being built as a layered asset set rather than one flattened image. The naming suggests at least:
The file sizes reinforce that structure.
The title-side .SCR files are typically 8,960 bytes, the title palettes are 1,024 bytes, and the large title graphics banks like TITLE.CGX, TITLE-ENG.CGX, and TITLE-ENG2.CGX are 34,048 bytes each.
So this looks like a consistent production format, not a grab bag of random exports.
One especially useful detail is that the title-family files are not just duplicates with different names. The main screen layouts all hash differently:
| Screen file | MD5 | Reading |
|---|---|---|
TITLE.SCR |
2eb5b43d472d3bc0b0db112f5286f787 |
base title layout |
TITLE-ENG.SCR |
760edb83d0d2541f7d9e778b2906169e |
English title variant |
TITLE-ENG2.SCR |
92eb0cc5f03d6195b11bc42a719f974c |
second English revision |
TITLE2.SCR |
656d56ef35135ada377604335c27e685 |
follow-up title layout |
TITLE2-ENG.SCR |
855366d8e92ce73f94568ceff9239544 |
English follow-up variant |
TITLE2B.SCR |
3c858694efddd0e532fbd373095776bd |
alternate second-stage layout |
TITLE3.SCR |
35bec087c0914d5604330b4311fa03ee |
later title-stage layout |
That matters because it shows the TITLE branch was being iterated actively rather than copied forward mechanically.
Even the closely related English files are genuinely different assets, not just renamed duplicates.
The graphics side tells the same story.
TITLE.CGX, TITLE-ENG.CGX, TITLE-ENG2.CGX, and TITLE-OBJ.CGX all have different hashes too, which suggests the English title work was not only happening at the screen-layout level.
The title graphics banks themselves were also being rebuilt or rearranged per revision.
A quick binary comparison between TITLE.SCR and TITLE-ENG.SCR is also revealing.
The first differences appear very early in the file, around byte 195, and then continue in a dense cluster rather than one isolated changed word.
That suggests the English title version was not just patching one small logo tile or one line of text. The screen layout itself was being reorganized at a fairly low level, likely to accommodate a differently shaped title graphic, different lettering widths, or a different object/tile arrangement.
So the safest reading is:
TITLE.SCR is not just the Japanese screen with text swapped outTITLE-ENG.SCR and TITLE-ENG2.SCR are real layout revisionsTITLE2* and TITLE3 files preserve later or alternate stages of the title presentation stack rather than one final canonical layoutTaken together, the TITLE family feels less like one menu asset and more like a self-contained little project inside the CAR workspace.
It preserves:
That makes it one of the clearest examples in the whole CAR directory of how Nintendo’s front-end art production really worked. The title screen was being treated as a layered, revisable asset stack, with layout, graphics, color, and object data all evolving together.
The same pattern shows up in the other menu families.
For kart selection the workspace keeps:
CAR-SELECT.SCR, CAR-SELECT.COLCAR-SELECT2.SCRCAR-SELECT3.SCRCAR-SELECT2-ENG.SCRFor map selection it keeps:
MAP-SELECT.SCR, MAP-SELECT.COLMAP-SELECT2.SCRMAP-SELECT-ENG.COLFor result and points screens it keeps:
RESULT.SCR, RESULT2.SCRRESULT-ENG.SCR, RESULT2-ENG.SCRD-POINT.SCR, D-POINT2.SCRD-POINT-ENG.SCR, D-POINT2-ENG.SCRREGI.SCR, REGI.COLThat is useful because it shows multiple menu flows being revised side by side. These are not isolated one-off screens. They look like whole front-end screen families, each with base versions, second or third revisions, and in several cases English variants too.
The screen hashes make that even clearer. Just like the title branch, the other front-end families are preserving genuinely different screen layouts rather than duplicate copies with new names.
For example:
| Screen file | MD5 |
|---|---|
CAR-SELECT.SCR |
01e3b56a2fbfedbe9b919cfc86e338bb |
CAR-SELECT2.SCR |
9fcd464d2a10b3a1543c6cdd36a7361b |
CAR-SELECT3.SCR |
3e0e29677d952e2ceff66349bad43519 |
CAR-SELECT2-ENG.SCR |
ce2bb307f1e9a2c809955262302c5209 |
MAP-SELECT.SCR |
08fd4f77dbd504f8b935964af6e5d0af |
MAP-SELECT2.SCR |
8a072e7199225d997d78937ac9ef6b90 |
RESULT.SCR |
5e820c34fa986aabfc4bd9cda5db1425 |
RESULT2.SCR |
d75f773d554e5e770ad5c74795f1e505 |
RESULT-ENG.SCR |
b37fff6d76bf83b1bb6ff402f0718e26 |
RESULT2-ENG.SCR |
3125e7ea64f7c5088ad6d61843349ac9 |
D-POINT.SCR |
5f78b12eb5cf6190280973112908ee04 |
D-POINT2.SCR |
86f5aa5dbf1287837db9c66a57204a76 |
D-POINT-ENG.SCR |
d10636d04238c924e6266584baed051d |
D-POINT2-ENG.SCR |
9f3a04739531f7fb15475f2dfd11f7c5 |
REGI.SCR |
d6fb72aed3aab1ff5f25eb238df0613b |
The palette side is distinct too.
CAR-SELECT.COL, MAP-SELECT.COL, MAP-SELECT-ENG.COL, and REGI.COL all hash differently, which suggests the localized or alternate screens were sometimes carrying their own color choices rather than only rearranged tilemaps.
The binary comparisons are useful here because they show where the differences begin.
CAR-SELECT2.SCR and CAR-SELECT2-ENG.SCR start diverging around byte 193, with a dense run of changed values immediately after that point.
RESULT.SCR and RESULT-ENG.SCR diverge even earlier, around byte 131, again in a dense block rather than one isolated replacement.
That matters because it suggests these English files were not created by tweaking one tiny text region at the end of an otherwise identical layout. The screen arrangements themselves were being rebuilt early in the data, which is exactly what you would expect if the localized screens needed different object placement, text spacing, or tile allocation.
So the safest conclusion is that CAR-SELECT, MAP-SELECT, RESULT, and D-POINT were all being actively revised as full screen families.
The English work was part of the same production flow, not an afterthought layered onto one frozen Japanese layout.
Outside the main title, select, and result families, a few smaller files help round out the workspace.
REGI.SCR and REGI.COL look like a compact region-selection or registration-style pair rather than a stray leftover, and both are distinct assets with their own hashes.
That makes REGI feel like a real front-end screen family, just a smaller one than the title or result branches.
The remaining support banks sit a little closer to the edge of the workspace:
SLOT.CGX looks like a standalone graphics bank with no surviving companion layoutHATA.CGX and HATA.SCR preserve a small flag-related two-file setBLACK.SCR looks like a utility or blanking screen rather than a full menu familyCAR.CGX, CAR.OBJ, and CAR-TEST.OBJ suggest a more general kart-side object or test-art branchCAR.OBJ and CAR-TEST.OBJ are especially interesting because they are the same size at 13,568 bytes but not identical.
Their binary differences begin almost immediately, which suggests CAR-TEST.OBJ is a genuine test or alternate object-layout asset rather than a straight copy of the main CAR.OBJ.
That kind of file is easy to overlook, but it is historically useful. It shows the CAR workspace still carrying experimental or validation-side object data alongside the cleaner menu and obstacle art families.
The lower-level text and glyph files help explain how the localized menu screens were probably being produced.
The most useful families are:
MOJI.CGX and MOJI-ENG.CGXSELECT.CGX and SELECT-ENG.CGXOBJ-MOJI.OBJ and OBJ-MOJI-ENG.OBJDEMO-MOJI.CGXEND-MOJI.CGXABC.CGX, MARK.CGX, and NINTENDO.CGXThe clearest thing these files show is that English support was not being handled only by repainting finished screens.
MOJI.CGX, MOJI-ENG.CGX, SELECT.CGX, and SELECT-ENG.CGX all survive as separate 17,664-byte graphics banks.
That size is a neat multiple of 32, which strongly suggests full tile banks rather than tiny one-off labels or compressed scraps.
The paired Japanese and English banks are also genuinely different files:
| File | MD5 |
|---|---|
MOJI.CGX |
ddc47793bc8006d8102686b9d859ebb0 |
MOJI-ENG.CGX |
606c5ef28c75451b4bb05fab2b85710d |
SELECT.CGX |
3697691a0e93e2cbd61ded95d6505317 |
SELECT-ENG.CGX |
7af87a522a754b755da3edeac8c9edf4 |
The binary differences also start surprisingly early.
MOJI.CGX and MOJI-ENG.CGX diverge at byte 257, while SELECT.CGX and SELECT-ENG.CGX diverge at byte 475.
That makes these look like properly maintained localized tile banks, not late-stage patches where one or two words were swapped in after the fact.
The OBJ-MOJI pair is even more revealing because it shows that text was also being handled at the object-layout level, not only as background tile graphics.
OBJ-MOJI.OBJ and OBJ-MOJI-ENG.OBJ are both 13,568 bytes, but they are not the same file.
Their differences begin almost immediately, at byte 4.
That strongly suggests separate object-form text layouts for Japanese and English UI elements.
The family is also slightly messy in a useful way.
The live folder preserves OBJ-MOJI.OBJ and OBJ-MOJI-ENG.OBJ, but the graphics side only survives as OBJ-MOJI.CGX.BAK.
That makes the CAR workspace feel less like a tidy export and more like a real working branch where the latest object-text graphics may have been renamed, replaced, or moved while the layout files stayed active.
The rest of the glyph assets split into a few clear sizes and likely roles.
| File | Size | Likely role |
|---|---|---|
ABC.CGX |
17,664 bytes | compact reusable alphabet or menu text bank |
DEMO-MOJI.CGX |
17,664 bytes | dedicated attract-mode or demo text bank |
END-MOJI.CGX |
34,048 bytes | larger ending or finale text bank |
MARK.CGX |
34,048 bytes | larger bank of symbols, markers, or UI signs |
NINTENDO.CGX |
34,048 bytes | branding or logo-side front-end graphics |
Those larger 34,048-byte banks are especially interesting because they sit at almost double the size of the regular menu glyph sets.
END-MOJI, MARK, and NINTENDO look less like ordinary menu-font banks and more like bigger presentation-side assets for the ending, logo screens, or title overlays.
The .BAK files are useful here too because they show which text assets were still changing.
Most of the core banks differ from their backups:
MOJI.CGX differs from MOJI.CGX.BAK, with the first change at byte 13,073MOJI-ENG.CGX differs from MOJI-ENG.CGX.BAK, with the first change at byte 681SELECT.CGX differs from SELECT.CGX.BAK, with the first change at byte 1,217SELECT-ENG.CGX differs from SELECT-ENG.CGX.BAK, with the first change at byte 16,418DEMO-MOJI.CGX differs from DEMO-MOJI.CGX.BAK, with the first change at byte 1,255OBJ-MOJI.OBJ differs from OBJ-MOJI.OBJ.BAK, with the first change at byte 1,540A few files do stay stable.
OBJ-MOJI-ENG.OBJ is identical to its backup, and MARK.CGX is also unchanged across the preserved pair.
That mix makes the revision trail feel real: some assets were still moving, while others had already settled into a final-looking form.
That fits nicely with the source side of the leak. The code page shows title, select, result, and ending logic as separate runtime modules, while this art page shows the reusable text banks, object-text layouts, and localized glyph sets that would have fed those modules.
The CAR directory also preserves a smaller but very recognizable set of gameplay-facing visual assets.
The clearest ones are:
JUGEM.CGX and JUGEM.OBJDOKAN.CGX, DOKAN.COL, DOKAN.SCRPOLE.CGX, POLE.OBJSLOT.CGXCAR-TEST.OBJThis overlaps neatly with the object-side material in the source tree. The code page already covers Lakitu, poles, pipes, and other object families as runtime systems. This folder shows the matching artist-side assets for some of those same objects.
DOKAN is especially nice because it survives as a graphics file, palette file, and screen/layout file.
That makes it look less like a loose sprite sheet and more like a worked obstacle asset with enough data to preview it inside a screen or tile arrangement.
Once the object files are compared directly, the CAR folder starts to show a clear split between full worked asset sets and lighter supporting graphics.
The most complete examples are:
| Asset family | Files | What that suggests |
|---|---|---|
JUGEM |
JUGEM.CGX, JUGEM.OBJ |
Lakitu had both graphics and object-layout data in the art workspace |
DOKAN |
DOKAN.CGX, DOKAN.COL, DOKAN.SCR |
the pipe asset preserved graphics, palette, and a screen/layout preview |
POLE |
POLE.CGX, POLE.OBJ |
pole-side course objects kept both graphics and object placement/form data |
Those three families feel like real worked production assets, not just loose graphic banks. They preserve enough surrounding material to suggest the artist could preview, place, or at least validate the asset in something close to its intended in-game arrangement.
By contrast, a few other files look more like support pieces:
SLOT.CGX survives only as a graphics bankHATA.CGX and HATA.SCR look like a smaller two-file flag-related asset setBG-ITEM.CGX is much larger than the other object graphics banks at 65,792 bytes, which makes it look more like a shared item or background-object sheet than one single obstacleCAR.CGX and CAR.OBJ, plus CAR-TEST.OBJ, suggest there was also a more general kart or vehicle-side object workspace sitting near the obstacle assetsThat variety is useful because it shows this was not a single consistent export format. The workspace appears to preserve whatever combination of graphics, object layout, palette, and preview screen the artist happened to need for each asset family.
The object-side file sizes line up in a fairly suggestive way:
.CGX banks for these object sets are 34,048 bytes.OBJ files like JUGEM.OBJ, POLE.OBJ, and CAR.OBJ are 13,568 bytesDOKAN.COL is a standard 1,024-byte palette fileDOKAN.SCR and HATA.SCR are 8,960-byte screen/layout filesBG-ITEM.CGX is unusually large at 65,792 bytesThat implies there was at least a semi-regular production pattern:
.CGX for the raw graphic bank.OBJ for object-form arrangement or layout data.COL when a dedicated palette mattered.SCR when the asset needed a screen or layout previewBG-ITEM.CGX stands out because it breaks that scale.
It is large enough that it probably acted as a broader shared item or object graphics bank rather than a single self-contained hazard.
That makes it a good candidate for one of the “glue” files in the workspace: not a complete worked asset family on its own, but a larger support bank feeding multiple item or background-object cases.
The object files in CAR line up cleanly with the structure seen in the source tree.
Jugem.asm controls Lakitu as a race-state system, Scene.asm mounts course-family packs like set_dokan, and Pole.asm, Poo.asm, Net.asm, and Item.asm cover the wider track-object and item side.
So the value here is not only that “Lakitu graphics survived.” It is that we can see both sides of the same production chain:
That makes JUGEM, DOKAN, and POLE some of the clearest bridges between the Mario Kart source archive and the separate CAR art branch.
One of the most interesting things in the directory is how much of it is organized into repeating family blocks rather than named final retail tracks.
The file patterns include large groups like:
B1-0.SCR through B6-3.SCRC1-0.SCR through C4-3.SCR, plus C1.CGX, C1.COL, C1-B.CGX, C1-B.SCRD1-0.SCR through D3-3.SCR, plus D1.CGX, D1.COL, D1-B.CGX, D1-B.SCRG1-0.SCR through G3-3.SCR, plus G1.CGX, G1.COL, G1-B.CGX, G1-B.SCRH1-0.SCR through H3-3.SCR, plus H1.CGX, H1.COL, H1-B.CGX, H1-Z.COLK1-0.SCR through K3-3.SCR, plus K1.CGX, K1.COL, K1-B.CGX, K1-B.SCRS1-0.SCR through S2-3.SCR, plus S1.CGX, S1.COL, S1-B.CGX, S1-Z.COLW1-0.SCR through W2-3.SCR, plus W1.CGX, W1.COL, W1-B.CGX, W1-B.SCRSTAR-0.SCR through STAR-3.SCR, plus STAR.CGX, STAR.COL, STAR-B.CGX, STAR-B.SCRThat structure suggests the folder preserves course-family art workspaces rather than only final named cup data. Each family tends to have:
.SCR panels or quadrants.CGX graphics banks.COL palette files-B or -Z variants that look like alternates or related sub-assetsThis is one of the best reasons the CAR folder matters. It suggests a pre-release art organization where environment sets were still being grouped and iterated by broad family code before the final retail course structure fully hardened.
Once the family files are counted together, they stop looking like random leftovers and start looking like repeated production templates.
The largest groups are:
| Family | Approximate non-BAK file count | What survives |
|---|---|---|
B |
24 | B1-0.SCR through B6-3.SCR |
C |
20 | C1-0.SCR through C4-3.SCR, plus C1.CGX, C1.COL, C1-B.CGX, C1-B.SCR |
D |
20 | D1-0.SCR through D3-3.SCR, plus D1.CGX, D1.COL, D1-B.CGX, D1-B.SCR |
G |
16 | G1-0.SCR through G3-3.SCR, plus G1.CGX, G1.COL, G1-B.CGX, G1-B.SCR |
H |
18 | H1-0.SCR through H3-3.SCR, plus H1.CGX, H1.COL, H1-B.CGX, H1-B.SCR, H1-Z.COL |
K |
16 | K1-0.SCR through K3-3.SCR, plus K1.CGX, K1.COL, K1-B.CGX, K1-B.SCR |
S |
12 | S1-0.SCR through S2-3.SCR, plus S1.CGX, S1.COL, S1-B.CGX, S1-Z.COL |
W |
12 | W1-0.SCR through W2-3.SCR, plus W1.CGX, W1.COL, W1-B.CGX, W1-B.SCR |
STAR |
8 | STAR-0.SCR through STAR-3.SCR, plus STAR.CGX, STAR.COL, STAR-B.CGX, STAR-B.SCR |
That repeated shape matters. Most families preserve:
.SCR layouts.CGX graphics bank.COL palette file-B variants that look like alternate graphics or companion screen elementsSo this was probably not a folder of disconnected test scraps. It looks much more like a set of reusable art packages for different environment themes.
Another useful detail is that these family names do not line up one-to-one with final retail track names.
Some, like STAR, feel familiar, but many others are just compact letter blocks like C, D, G, H, K, S, and W.
That suggests the workspace was still organized around internal art-family buckets rather than the exact retail cup presentation seen by players.
In other words, the artist-side naming here looks earlier and looser than the code-side family labels like CIRCUIT, OBAKE, GRASS, CASTLE, ICE, DART, SAND, and STAR that survive in the source tree.
That mismatch is historically useful. It suggests the production pipeline may have moved through at least two levels of naming:
CARlabel.def and Scene.asmThe main Mario Kart source page already shows that the runtime was built around family-based assets rather than one unique blob per course.
In the code-side material:
label.def groups maps through families like CIRCUIT_CHR, OBAKE_CHR, GRASS_CHR, CASTLE_CHR, ICE_CHR, DART_CHR, SAND_CHR, and STAR_CHRMAPxx_CHR, MAPxx_BCH, MAPxx_BSC, MAPxx_COL, and MAPxx_OBJ point each course back to one of those shared themed setsScene.asm then mounts environment-specific object packs like set_dokan, set_bubble, set_fish, set_poo, set_wood, set_ball, and set_rdossunThat means the CAR workspace is probably preserving the earlier visual side of the same family-based content model.
The code tells us the game was assembled from themed asset banks.
The CAR directory shows what those themed art banks may have looked like while they were still being laid out, colored, and revised.
If one code-side family is compared closely, the circuit branch gives the clearest picture of how the runtime and art workspace probably fit together.
In label.def, the four circuit courses all point back to one shared runtime family:
MAP00_CHR, MAP07_CHR, MAP0E_CHR, and MAP0F_CHR all resolve to CIRCUIT_CHRMAP00_BCH, MAP07_BCH, MAP0E_BCH, and MAP0F_BCH all resolve to CIRCUIT_BCHMAP00_BSC, MAP07_BSC, MAP0E_BSC, and MAP0F_BSC all resolve to CIRCUIT_BSCMAP00_COL, MAP07_COL, MAP0E_COL, and MAP0F_COL all resolve to CIRCUIT_COLMAP00_OBJ, MAP07_OBJ, MAP0E_OBJ, and MAP0F_OBJ all resolve to CIRCUIT_OBJkart-init.asm then treats those BCH and BSC tables as the back-layer path.
Open_character decodes Back_character_address as the mode 0 background character set, and Set_back_screen uploads the matching back-layer screen data from Back_screen_address.
That is not just a vague secondary asset slot. For the circuit family, the game really does appear to be built around:
That structure lines up strikingly well with the C1 package in CAR:
C1.CGXC1-B.CGX and C1-B.SCRC1.COLC1-0.SCR through C1-3.SCRThe naming still is not a perfect proof.
C1 in the art workspace is not explicitly labelled CIRCUIT, and the source tree uses more descriptive family names than the CAR folder does.
But structurally, the match is very close.
So the safest interpretation is:
C1 looks like a strong artist-side candidate for one circuit-family packageC1-B looks like the same kind of companion background branch the runtime later exposes as CIRCUIT_BCH and CIRCUIT_BSCC1-0 to C1-3 screens fit the same “one family, multiple course layouts” pattern seen in the four circuit maps on the code sideFor a less explicit family, D1 is a good second check.
It has the same overall package shape:
D1.CGXD1-B.CGXD1-B.SCRD1.COLD1-0.SCR to D1-3.SCRThat lines up neatly with the runtime DART family, which also preserves DART_CHR, DART_BCH, DART_BSC, DART_COL, and DART_OBJ in label.def.
The naming is still only circumstantial here, so this is best treated as a plausible match rather than a proven one, but the structure is very close.
D1 is also useful because it shows the family layers can stabilize at different times.
Its main D1.CGX bank is identical to D1.CGX.BAK, while the palette and the -B branch were still changing:
| Pair | Reading |
|---|---|
D1.CGX vs D1.CGX.BAK |
unchanged |
D1.COL vs D1.COL.BAK |
changed from byte 546 |
D1-B.CGX vs D1-B.CGX.BAK |
changed from byte 19 |
D1-B.SCR vs D1-B.SCR.BAK |
changed from byte 65 |
That is a nice reminder that the companion branch was not just an afterthought. At least in some families, the primary course graphics could settle first while the secondary layer and palette were still being revised.
Of the still-unresolved letter families, W1 now looks like the strongest candidate for the runtime ICE branch.
The clearest clue is the palette.
W1.COL opens with a run of very bright high-value colors like:
0x7D46, 0x7FFF, 0x7FFE, 0x7FFD, 0x7FFB, 0x7FDA, 0x7FB9, 0x7F98
That is a much colder, whiter start than families like H1, whose palette begins with darker and more mixed values.
So purely on the art side, W1 already reads more naturally as a snow or ice-themed package than most of the other unresolved families.
The source side nudges the same way.
The runtime has a dedicated ICE family in label.def, and Scene.asm comments one of the shared obstacle paths as dokan,dokanX ; (CIRCUIT,SNOW).
That is useful because it shows the codebase still preserving a snow naming idea beside the final ICE family label.
Taken together, the safest read is:
W is a plausible artist-side shorthand for a winter or snow-themed familyW1 the strongest remaining candidate for the runtime ICE packageH1 is more difficult to place cleanly.
It has the same strong family-package structure as the other major groups, including:
H1.CGXH1-B companion branchH1.COL and H1-Z.COLSo it is clearly an important family. What is missing is a comparably clean naming hint.
The best cautious guess is that H may preserve an earlier artist-side label for the runtime OBAKE family, perhaps something closer to “horror” than the later descriptive code name.
That would fit the fact that OBAKE is one of the major runtime families but has no obvious letter-side match yet.
Still, that connection is much weaker than W to ICE, so it is better treated as a live possibility than a likely solution.
C1 is one of the clearest families to study because it preserves almost every layer of the artist-side stack at once:
C1-0.SCR to C1-3.SCRC1-B.SCRC1.CGXC1-B.CGXC1.COLThat makes it look much less like one course screen and much more like a small production package.
It has multiple layout screens, a main graphics bank, a secondary -B graphics and screen branch, and a palette.
The live files are all distinct:
| File | Size | MD5 |
|---|---|---|
C1-0.SCR |
8,960 | ff1bb0edd1686714c5e5ce17ea01274b |
C1-1.SCR |
8,960 | e122d968ab2b41f913d9cd56753ec74b |
C1-2.SCR |
8,960 | b5d3745ee9a3258eec51dfc7573ef750 |
C1-3.SCR |
8,960 | 9fd8242ec7e7b572a781dfe558a67bba |
C1-B.SCR |
8,960 | 73470dd1f87087376d279a563378ce0c |
C1.CGX |
65,792 | 83e7bef72785284a12839eded96617b6 |
C1-B.CGX |
17,664 | 76f8484072b86e10cb1b1c7e63dd231f |
C1.COL |
1,024 | f941b09b506ef4164b8d044ff9e792d6 |
The size split is especially interesting.
C1.CGX is one of the big 65,792-byte family graphics banks, while C1-B.CGX drops down to the smaller 17,664-byte bank size.
That makes the -B branch look more like a support or alternate graphics layer than a full second copy of the main course bank.
The backup comparisons make C1 even more revealing.
Every major live file differs from its .BAK, but not all in the same way:
| Pair | First difference |
|---|---|
C1.CGX vs C1.CGX.BAK |
byte 16,257 |
C1.COL vs C1.COL.BAK |
byte 577 |
C1-0.SCR vs C1-0.SCR.BAK |
byte 5,837 |
C1-B.SCR vs C1-B.SCR.BAK |
byte 134 |
That spread is useful. It does not look like one bulk export replacing every file from the top. It looks more like targeted edits landing at different layers of the same family:
-B support screenSo C1 reads as a good worked example of how the CAR workspace was actually being used.
Artists were not just saving one final course-family blob.
They were revising screens, support screens, graphics banks, and palettes independently inside the same family package.
The STAR family is smaller, but it is useful because it preserves a mix of changed and unchanged backups:
STAR.CGX, STAR.COL, STAR-0.SCR, STAR-1.SCR, STAR-3.SCR, and STAR-B.SCR all differ from their backupsSTAR-2.SCR is identical to STAR-2.SCR.BAKSTAR-B.CGX is identical to STAR-B.CGX.BAKThat is a nice reminder that the backup trail is not simply “everything changed.” Some pieces of a family were still moving, while others had already settled into stable forms.
At this point a few of the artist-side families can be mapped back to the runtime side with more confidence than others.
| CAR family | Runtime-side candidate | Confidence | Why |
|---|---|---|---|
C / C1 |
CIRCUIT |
high | explicit structural match, plus C.MD7 and four-map circuit reuse in label.def |
STAR |
STAR |
high | name survives directly on both sides |
D / D1 |
DART |
medium | same family-package shape and matching initial, but no explicit descriptive label in CAR |
G / G1 |
GRASS |
medium | same family-package shape and matching initial |
W / W1 |
ICE |
medium | bright white-heavy palette, plausible winter shorthand, and source-side SNOW comment near the ice/circuit obstacle path |
S / S1 |
SAND |
medium | same family-package shape and matching initial, but could be confused with other S-prefixed material |
H |
OBAKE or other earlier label |
low | important family-package shape, but only a weak naming hypothesis |
B, K |
unknown | low | strong family-package structure, but no confident descriptive match yet |
That table is still intentionally cautious. The important part is not pretending every letter is solved. It is showing that the CAR workspace and the runtime source are organized the same way even where the exact artist-side naming has not fully survived.
Once the family variants are compared directly, the suffixes start to look much less arbitrary.
The -B branch appears in:
C1-B.CGX, C1-B.SCRD1-B.CGX, D1-B.SCRG1-B.CGX, G1-B.SCRH1-B.CGX, H1-B.SCRK1-B.CGX, K1-B.SCRS1-B.CGX, S1-B.SCRW1-B.CGX, W1-B.SCRSTAR-B.CGX, STAR-B.SCRThat is a very regular pattern.
Across all of those families, -B means a smaller companion graphics bank plus a matching screen/layout file.
| Variant type | Size pattern | Reading |
|---|---|---|
main family .CGX |
65,792 bytes |
large primary course-family graphics bank |
-B .CGX |
17,664 bytes |
smaller companion graphics bank |
main family .SCR |
8,960 bytes |
regular family screen/layout file |
-B .SCR |
8,960 bytes |
companion screen/layout file using the same container format |
That consistency is one of the strongest clues in the whole workspace.
It suggests -B was not being reused loosely for unrelated things.
It looks much more like a deliberate secondary-layer convention inside the course-family pipeline.
The binary comparisons reinforce that.
Every tested family differs from its -B companion immediately:
| Pair | First difference |
|---|---|
C1.CGX vs C1-B.CGX |
byte 1 |
D1.CGX vs D1-B.CGX |
byte 1 |
G1.CGX vs G1-B.CGX |
byte 1 |
H1.CGX vs H1-B.CGX |
byte 1 |
K1.CGX vs K1-B.CGX |
byte 1 |
S1.CGX vs S1-B.CGX |
byte 1 |
W1.CGX vs W1-B.CGX |
byte 1 |
C1-0.SCR vs C1-B.SCR |
byte 1 |
D1-0.SCR vs D1-B.SCR |
byte 1 |
G1-0.SCR vs G1-B.SCR |
byte 1 |
K1-0.SCR vs K1-B.SCR |
byte 1 |
W1-0.SCR vs W1-B.SCR |
byte 1 |
So the -B files are not trimmed copies of the main branch.
They are separate companion assets that just happen to live inside the same family package.
Looking just at the raw -B graphics banks adds one more useful clue.
They are all the same size at 17,664 bytes, but they do not all open the same way.
One group starts with long zero-heavy prefixes:
C1-B.CGXD1-B.CGXG1-B.CGXK1-B.CGXS1-B.CGXW1-B.CGXAnother group starts immediately with denser 0xFF and 0x00FF style bit patterns:
H1-B.CGXSTAR-B.CGXThat split is not enough to say exactly what the banks contain, but it does suggest the -B branch was still being used for more than one recurring visual role.
Some companion banks look sparse or partially blank at the front, while others jump straight into dense tile data.
The cross-family comparisons make the same point.
Files like C1-B.CGX and D1-B.CGX do not match each other, but they stay structurally similar enough to diverge only after the first 21 bytes.
S1-B.CGX and W1-B.CGX are also close enough to hold off their first difference until byte 73.
So the -B banks do not look random.
They behave like a recurring companion-bank format, but one that could still hold different kinds of support graphics depending on the family.
The source tree now makes that interpretation much stronger.
In kart-init.asm, the secondary runtime tables beside the main family assets are literally named Back_character_address and Back_screen_address, and those point to the BCH and BSC data listed in label.def.
Open_character then decodes the BCH path as the mode 0 background character set, while Set_back_screen uploads the BSC data as the matching back-layer screen data.
So while the CAR suffixes do not prove an exact one-to-one filename mapping by themselves, the overall structure lines up very neatly:
-B banks on the art sideBCH and BSC back-layer character and screen banks on the runtime sideThat makes the -B branch look much more like a companion background layer than a random alternate export.
The -Z suffix behaves much more narrowly.
In this workspace it only appears as:
H1-Z.COLS1-Z.COLBoth are regular 1,024-byte palette files, and both differ from the main family palette:
| Pair | First difference |
|---|---|
H1.COL vs H1-Z.COL |
byte 5 |
S1.COL vs S1-Z.COL |
byte 1 |
That is a much tighter pattern than -B.
There are no matching -Z graphics banks or -Z screen files here.
So the safest reading is that -Z was being used for alternate palette variants inside specific families, not for a full second visual layer.
Taken together, the suffixes now look surprisingly disciplined:
-B behaves like a recurring secondary graphics-and-layout branch-Z behaves like a rarer alternate palette branchThat is exactly the kind of detail that makes the CAR workspace feel like a real production system rather than a random artist dump.
The three .MD7 files are some of the highest-signal artifacts in the whole directory:
C.MD7CCC1.MD7S.MD7All three are exactly 32,768 bytes, which matches a full 128x128 Mode 7 map. That makes them much more than ordinary menu assets. They look like direct raw course-plane data for actual track work.
That is especially useful alongside the source leak. The code page explains how Mario Kart’s runtime consumed course grids, area tables, target tables, and scene families. This CAR page preserves the artist-side raw map data that sits much closer to the visual construction stage of those courses.
One especially useful detail is that the three files are not all unique.
| File | Size | MD5 | Notes |
|---|---|---|---|
C.MD7 |
32768 |
a8d5cdcfa2e7b639ebe8fbbfb87637c2 |
identical to CCC1.MD7 |
CCC1.MD7 |
32768 |
a8d5cdcfa2e7b639ebe8fbbfb87637c2 |
identical to C.MD7 |
S.MD7 |
32768 |
3f5a4254a470ecfb553a0eba0800536e |
distinct map data |
C.MD7 and CCC1.MD7 are byte-for-byte identical.
That is a nice clue that CCC1 is probably not preserving a different map layout, but a duplicate, alias, or revision tag pointing back to the same underlying course-plane data.
By contrast, S.MD7 is genuinely different.
So the workspace is preserving at least two distinct raw Mode 7 map bodies, not just three filenames for the same asset.
Viewed as raw words, the .MD7 files do not look like compressed blobs or image headers.
They look like dense repeating 16-bit values spread across the entire file.
For example, the first few words in C.MD7 and CCC1.MD7 are:
08f0 08f0 08f0 07f0 09f1 08f1 08f1 08f1
09f2 08f2 08f2 08f2 08f3 08f3 08f3 08f3
The most common 16-bit words in C.MD7 include values like:
19441d44190117441d01While S.MD7 is dominated by a very different set:
1e171e0712171e001d00That is consistent with the idea that these are map-plane cell values, tile IDs, or packed per-cell flags rather than simple sequential bitmap graphics. The exact encoding still needs proper format decoding, but the files clearly behave like structured map data.
Taken together, the .MD7 files suggest that the CAR branch was not only painting interface art.
It was also carrying raw track-plane data close enough to the real game format that it could feed directly into Mode 7 map work.
The duplicate C and CCC1 pair is especially interesting because it hints at one of three things:
The safest conclusion is simply that the workspace still contained raw course data under active working names, and that not every map-family file in CAR represented a unique final layout.
This page and the main source page do overlap, but in a good way. They are usually describing different sides of the same systems.
The clearest overlaps are:
| Workspace item | Art-side evidence here | Code-side match in the source tree |
|---|---|---|
| Title and menu screens | TITLE*, CAR-SELECT*, MAP-SELECT*, RESULT*, REGI* |
title*.asm, k-select.asm, w-select*.asm, c-select*.asm, Result.asm |
| Object art | JUGEM*, DOKAN*, POLE*, SLOT* |
Jugem.asm, Scene.asm, object packs like set_dokan |
| Course-family assets | C*, D*, G*, H*, K*, S*, W*, STAR* |
family-based asset labels in label.def and scene grouping in Scene.asm |
| Mode 7 map work | C.MD7, CCC1.MD7, S.MD7 |
runtime map, scene, and drive-data systems described in MarioKart.md |
So the overlap is not really duplication.
MarioKart.md explains how the game-side code uses these families and screens.
SuperMarioKart2DArt.md preserves the workstation-side material those systems were built from.
The CAR workspace captures a pre-release phase where Super Mario Kart’s art pipeline still looked fluid and hands-on.
The strongest clues are:
.BAK revisionsTaken together, this looks less like a final clean asset dump and more like an artist’s active branch where UI, track-family graphics, obstacle art, and map data were all being iterated side by side.