Warn­ing! Your devicePixelRatio is not 1 (or your brows­er doesn't CSS me­dia queries, in which case you can prob­a­bly ig­nore this warn­ing)! Since HTML is as brain­dead as it can get, cre­at­ing sites out­side of di­ver­si­ty hires cor­po­rate art sphere is damn near im­pos­si­ble, so this site is not re­al­ly op­ti­mized for HiDPI screens. Some im­ages might ap­pear blur­ry.

Need for Speed III: Hot Pursuit (PlayStation)

Cre­at­ed: 1737323617 (2025-01-19T21:53:37Z), 6221 words, ~26 min­utes

Tags: , , , ,

This post is part of se­ries nfs: 1, 2, 3:HP (W, PSX), 4:HS, 5:PU, MCO, 6:HP2

Boxart frontJXL (JPEG JXL) JPEG (orig)Boxart backJXL (JPEG JXL) JPEG (orig)

Try­ing to sur­vive the Christ­mas (yes, it took me al­most a month to write a post, again), I had a weird idea. Con­sole ver­sions of ear­ly NFS games were some­times dif­fer­ent from the nor­mal Win­dows re­leas­es, so I de­cid­ed to check out some of them be­fore mov­ing on to more "mod­ern" NFSs. Why NFS3? I know the orig­i­nal 3DO ver­sion of NFS1 is pret­ty dif­fer­ent from the lat­er ports, but hon­est­ly I didn't want to touch NFS1 again. Plus I want­ed to try this on my Vi­ta, and em­u­lat­ing PSX is way eas­i­er there than em­u­lat­ing 3DO. NFS2, I boot­ed it up on my Vi­ta, but apart from a dif­fer­ent EA lo­go and dif­fer­ent HUD dur­ing the races, it's pret­ty much the same as the (non-SE) Win­dows ver­sion. A quick in­ter­net search al­so re­vealed no huge dif­fer­ences be­tween the two plat­forms. So, NFS3. No huge dis­par­i­ty be­tween the two ver­sions, like in NFS1/4/5, but still, dif­fer­ent menus, some dif­fer­ent me­chan­ics, dif­fer­ent cars, but most im­por­tant­ly, it has 5 hid­den tracks they re­moved from the Win­dows ver­sion, and the un­fin­ished TR02B track! The lost sis­ter track of Em­pire City!

De­spite this is still NFS3, I can't redi­rect you to my Win­dows NFS3 re­view to check out the in­tro... be­cause it's dif­fer­ent. For fuck's sake EA. So, here you are, NFS3 in­tro, but from the PlayStation ver­sion this time.

Where to start? New sound­track un­der EA lo­go. Which is weird, be­cause NFS2SE and Win­dows NFS3 had the same lo­go and sound­track, but PlayStation NFS3 was re­leased be­tween the two. Ap­par­ent­ly which lo­go they use is not on­ly time-de­pen­dent. Dol­by Sur­round©®℗🄯™℠¤$€§‰¶〒🚽⚠etc. lo­go is same as ever.

Then on­to the ac­tu­al in­tro, where we find some oth­er dif­fer­ences too. It doesn't have the in-game videos from the Win­dows ver­sion, for ob­vi­ous rea­sons, but no in-game footage from the PS ver­sion ei­ther. All re­al life videos, just like in NFS2, in­clud­ing some Naz­ca C2 footage not seen in the Win­dows ver­sion (prob­a­bly be­cause it lacks C2).

Then on­to the tech­ni­cal parts, be­cause I want­ed to ex­tract the in­tro from the game files, like I did for oth­er blog­posts. I mount­ed the .cue and looked at it, it has every file thrown in­to the root dir, ex­cept a lone­ly movies dir... ex­act­ly what I need. There are some .xa files in­side, file said "MDEC video stream", cool, play it.

$ mpv movies/demo1av.xa
Failed to recognize file format.
Exiting... (Errors when loading file)

Ehh? Didn't FFmpeg have sup­port for MDEC? Let's see ffprobe di­rect­ly:

$ ffprobe movies/demo1av.xa
movies/demo1av.xa: Input/output error

Eeeeeh? I/O er­ror? What the hell is FFmpeg do­ing? Some in­cor­rect­ly mapped er­ror code?

$ cp movies/demo1av.xa /mnt/ram/
cp: error reading 'movies/demo1av.xa': Input/output error

Whaaaaaaat? This is a fuck­ing disc im­age I ex­tract­ed from a 7z file, how can it throw read er­ror? Af­ter some search­ing on the net, I found a de­scrip­tion of PlayStation 1 Video For­mat, and then I en­light­ened. The an­swer is, of course, Sony. If you need some­thing to be done in the most re­tard­ed way hu­man­ly pos­si­ble, you can count on Sony do­ing that. I knew from pre­vi­ous­ly au­dio and da­ta CDs are stored dif­fer­ent­ly, as au­dio CDs have no check­sums... but I didn't know you can change be­tween these two (ac­tu­al­ly more than two) modes on a per-sec­tor ba­sic. What is Sony do­ing in short is stor­ing the video stream of the movies in Mode 1 Form 1 sec­tors, but the au­dio stream as Mode 2 Form 2 sec­tors, mix­ing these two kinds of sec­tors in the same fuck­ing file! Of course, Lin­ux on­ly sup­ports Form 1 sec­tors, be­cause you on­ly see them in nor­mal da­ta discs. Aaaar­rrgggh­hh!

So, how to ac­tu­al­ly get these files off the disc? In the end I used jp­sxdec to ex­tract the xa files to lo­cal files. In­ter­est­ing­ly, file now de­tect these files as "da­ta", but FFmpeg can fi­nal­ly open them (even if spew­ing shit­loads of er­rors in the con­sole). In prin­ci­ple, I could have used the GUI thingy to con­vert these xa files to more nor­mal avi files, but us­ing FFmpeg was just eas­i­er.

So what did I get? An in­tro video di­vid­ed in­to two sec­tions, 15 FPS, full-range YUV420, and au­dio with 37800 Hz sam­pling rate. Well, apart from the 15 FPS, not ex­act­ly the usu­al stuff. And I didn't say any­thing about the res­o­lu­tion. The first file, NLOGVA.XA con­tain­ing the EA and DS lo­gos, is 256x240. WTF res­o­lu­tion, but ap­par­ent­ly it's a stan­dard PS1 res­o­lu­tion. Ana­log TVs didn't re­al­ly have a hor­i­zon­tal res­o­lu­tion (on­ly ver­ti­cal), as it was just one con­tin­u­ous sig­nal, so it was still stretched on screen to 4:3. No square pix­els for you (they're about 1.25 as wide as tall). Then the sec­ond part of the in­tro is stored in 256x192, so un­like the Win­dows ver­sion, it is an ac­tu­al widescreen for­mat, for an as­pect ra­tio of 5:3 (or 15:9). All I did was spec­i­fy­ing -sar 1.25 when en­cod­ing the video above, if it ap­pears squished, try to play it in a re­al video play­er. De­spite the low­er res­o­lu­tion, this still seems a bit bet­ter than the Win­dows ver­sion, MPEG ar­ti­facts are less vis­i­ble.

Trying to play this thing on a PS Vita#

As I men­tioned, first I tried this on my Vi­ta. I down­loaded an EBOOT from the at that time dy­ing (now dead) CDRomance site (mir­ror), and popped it in­to Adren­a­line. I start­ed the game, flicked through the game modes, then went on­to knock­out mode, think­ing it would be prob­a­bly eas­i­er to beat than tour­na­ment, as I on­ly have to avoid be­ing the last. Mode sim­u­la­tion, dif­fi­cul­ty ex­pert, Di­a­blo SV car, race, what could go wrong? A lot, ac­tu­al­ly. First, han­dling in the PSX ver­sion is vast­ly dif­fer­ent than the Win­dows ver­sion, plus ex­pert knock­out means ran­dom track con­di­tions—trans­la­tion: 80% night, and night is even dark­er here. So of course I was knocked out on Home­town. Okay, try this on be­gin­ner dif­fi­cul­ty—same re­sult. Ehh? Try a few more times, un­til I was fi­nal­ly able to beat Home­town on be­gin­ner dif­fi­cul­ty. This will be tough, was on my mind, but the rest wasn't so bad as soon as I got the hang of it. Like in NFS2 and un­like in Wid­ows NFS3, you can't save the knock­out state, but I won't judge you if you use save states. Es­pe­cial­ly with the ex­pert knock­out. Af­ter fin­ish­ing the be­gin­ner one, I went back to the ex­pert again, and I was still last. And not with a few mil­lisec­onds, but some­thing like 20+ sec­onds. Just uh, how? It took an­oth­er bunch of at­tempts to just not get knocked out on the first race. But hey? Maybe it's doable? Some­thing like 1393 save states lat­er—yes, it's doable. There was like one race where I didn't fin­ish sec­ond last. I think this game al­so has what I bitched about in the NFS4 re­view, if you let your op­po­nents get too far ahead, the game stops prop­er­ly sim­u­lat­ing the AI op­po­nent and they be­come im­pos­si­bly fast. And how the hell am I gonna win the tour­na­ment, where it's not enough to fin­ish sec­ond last each race? The an­swer is, not on a Vi­ta.

But be­fore I switch over to the desk­top, here's a record­ing of me rac­ing an ex­pert sin­gle race (not knock­out) on Re­drock Ridge. Prob­a­bly my least fa­vorite track in NFS3 (along with the sis­ter Lost Canyons track), but I've cho­sen this track be­cause I've al­ready up­loaded videos of Home­town, At­lanti­ca (both for 3 and 4!), Rocky Pass, Em­pire City, and the longer vari­ant tracks are just too long. What you see here is what I saw on Vi­ta screen, the on­ly edit­ing I did was re­mov­ing the black bars (Vi­ta screen is 16:9). In par­tic­u­lar, you see the ar­ti­facts of me scal­ing the PS1 res­o­lu­tion by 1.125 to al­most fill the PS Vi­ta screen (ver­ti­cal­ly). And I say al­most, be­cause af­ter watch­ing the record­ing, I re­al­ized there's a two pix­els wide black bar at the top and bot­tom of the im­age, so the ver­ti­cal res­o­lu­tion is on­ly 540 pix­els in the video, in­stead of 544.

Where to start un­pack­ing this. The first thing you'll prob­a­bly no­tice is the miss­ing mu­sic. There's a com­ment about this on the CDromance page, looks like it af­fects the Vi­ta too. Lat­er I tried to con­vert the orig­i­nal PSX game to EBOOT with pop-fe, same re­sults.

Next is the lack­lus­ter graph­ics (com­pared to the Win­dows ver­sion, it looked bad on Vi­ta, but see­ing it on a 20+″ mon­i­tor is sur­pris­ing­ly painful) with slideshow fram­er­ate ingame. I record­ed it us­ing "less than" 60 FPS with vi­ta-ud­cd-uvc, but in ret­ro­spec­tive, I should have prob­a­bly stayed with 30 FPS, as the game usu­al­ly stays even be­low it, av­er­ag­ing around 25 FPS. Oh, and some record­ing rant. This vi­ta plu­g­in streams video through the USB, but not au­dio. The of­fi­cial workaround is to use the head­phone out­put of the Vi­ta. First I tried to get Blue­tooth au­dio stream­ing to the com­put­er work­ing, I could quick­ly set it up be­tween PipeWire and my An­droid phone, but Vi­ta—nope. It wasn't easy to pair to be­gin with, when I tried Vi­ta dis­played a bunch of num­bers and asked me to con­firm on the oth­er de­vice, but Bluez just switched in­to paired mode with­out any ques­tions, and Vi­ta failed the pair­ing a few sec­onds lat­er. Just per­fect. Some in­ter­net search­ing led me to us­ing agent KeyboardOnly in­side bluetoothctl, this switched to a dif­fer­ent pair­ing mode where I had to en­ter the num­bers from Vi­ta in­to bluetoothctl's com­mand line, but at least it worked. Au­dio? Nope. Just a crossed out speak­er icon in Vi­ta, vol­ume up/down but­ton doesn't do any­thing, and no sound played through Blue­tooth. If I tried to change pro­file in PipeWire, it just dis­con­nect­ed, nev­er to re­con­nect for more than a few sec­onds again. So af­ter a while I gave up, and re­vert­ed to the ana­log record­ing workaround. But don't con­nect the Vi­ta to the same com­put­er as you're record­ing from, it seems to gen­er­ate a lot of noise. What worked best for me was to con­nect the USB to the lap­top, un­plug the lap­top (so the mains 50 Hz dis­ap­pears), record the video on the lap­top and record the sound from my desk­top ma­chine. Un­for­tu­nate­ly this re­quires you to man­u­al­ly sync up au­dio and video lat­er, but this pro­duced the small­est amount of noise. Nev­er­the­less, I still ap­plied a noise re­duc­tion fil­ter in Tenac­i­ty (an Au­dac­i­ty fork with­out the teleme­try) af­ter­ward.

Al­so note at the race end, I beat the best sim­u­la­tion time for this track, still on­ly fin­ished third. The same as Win­dows NFS3/4 on hard­er dif­fi­cul­ty lev­els, AI be­ing faster than the fastest times, but not count­ing as a record.

Trying to play this thing in DuckStation#

This al­so wasn't as sim­ple as I thought. I had an old DuckStation build ly­ing around, but I want­ed to check if there's a new­er ver­sion, then the shit hit the fan. This is when I had to re­al­ize DuckStation ef­fec­tive­ly be­came pro­pri­etary soft­ware be­cause ap­par­ent­ly the re­tard­ed au­thor had a men­tal break­down or some­thing. So I got the lat­est GPL ver­sion, tried to build it—oh, they re­moved the nogui ver­sion. On­ly the bloat­ed mess Qt ver­sion re­mains. Argh. First I tried to re­vert the re­moval com­mit, but of course so much changed in the code in the mean­time, it failed to build. OK, check out the ver­sion be­fore the re­moval—still doesn't build. I mean, the com­mit was named "NoGUI: Purge un­used code", so I guess this was an un­main­tained fea­ture for some time. In the end, I found com­mit d4d7a13fed to al­most work, on­ly need­ed a few small ad­just­ments to the code. Al­so, old ver­sion used the val­ue of XDG_DATA_DIR en­vi­ron­ment vari­able to fig­ure out where to place set­tings, this ver­sion now us­es XDG_CONFIG_DIR. While this is the ap­pro­pri­ate env var, it no longer al­lows me to just put DuckStation's con­fig dir to some­where else, when I'd like to have sep­a­rate con­figs for the games I have. In the end, if I was patch­ing DuckStation al­ready, I went a bit fur­ther and added a DUCKSTATION_HOME env var, just to move DuckStation's con­figs to a dif­fer­ent dir while leav­ing Qt and Fc­itx set­tings and what­not alone. You can get my changes from my git serv­er (mir­ror).

Af­ter­ward, I spent some time mess­ing around with DuckStation set­tings, here's a list of im­por­tant ones I've changed (hope­ful­ly I'm not for­get­ting any­thing). De­spite my rant about the Qt ver­sion above, I rec­om­mend do­ing the set­tings from the Qt GUI, as not every set­ting is ex­posed on the nogui. Af­ter set­ting up the game, you can for­get about the Qt bloat.

Then un­der Set­tings/Con­trollers, set up your con­troller some­how. I rec­om­mend se­lect­ing Ana­log Con­troller (this game sup­ports it), and un­der Set­tings en­able Force Ana­log Mode on Re­set. Oth­er­wise, you'll for­get to switch to ana­log mode be­fore start­ing a race, and do­ing so will make the game for­get all your bind­ings! It's even worse than the Win­dows ver­sion, so check in-game set­tings time to time, this games likes to re­set them ran­dom­ly too. But back to DuckStation, al­so set Ana­log Sen­si­tiv­i­ty to 100%. Ig­nore the re­tard­ed com­ment about 130% to 140% rec­om­mend­ed on mod­ern con­trollers, it will just de­stroy pre­ci­sion for no good rea­son. Like those cheap chink con­trollers where they try to turn the ana­log joy­stick in­to dig­i­tal. What kind of brain dam­age is re­quired to think this is a good idea?! If you're us­ing a DS4 con­troller, I do not rec­om­mend us­ing the "ob­vi­ous" map­ping, as L2/R2 is dig­i­tal on the PSX con­troller. What I did was in­stead to bind L2 to left joy­stick down, and R2 to right joy­stick right. Weird, but this game, un­like 99% of con­sole games, al­lows you to set up cus­tom bind­ings, ex­cept for menu hotkeys (so you might still want to bind cir­cle as cross and cross as tri­an­gle and tri­an­gle as cir­cle if you're used to nip lay­out). And yes, ana­log gas/break works, de­spite none of the built-in pre­sets us­ing a bind­ing where they are ana­log in­puts.

Phew, sor­ry for the wall of text, you can now start the game—if you do not need to im­port your saveg­ame from Vi­ta. Un­for­tu­nate­ly Vi­ta/PSP's PSX em­u­la­tor use some en­crypt­ed shit for­mat to store save games, so you have to con­vert it. I've found a javashit con­vert­er here, it con­vert­ed the Vi­ta's VMP file to some­thing DuckStation un­der­stood. Put it in the cor­rect di­rec­to­ry ($DUCKSTATION_HOME/memcards/shared_card_1.mcd if you're us­ing shared cards), boot the game, change key­bind­ings and you're ready. You might want to en­able Dol­by Sur­round here, look at the Dol­by Sur­round sec­tion of the Win­dows re­view, the same steps work here too.

So lo and be­hold, the same game as above, but run­ning in DuckStation:

It has mu­sic (and it starts right with a mu­sic miss­ing from the Win­dows re­lease!), load­ing doesn't take ages, it has a bet­ter than slideshow fram­er­ate, 3D geom­e­try is dis­cernible...! Cars some­times move in a weird way in the dis­tance, but you'll get used to it af­ter a few races. And the best of all, I can win the race with­out break­ing a sweat. Ap­par­ent­ly, the best way to play this PSX game is to em­u­late it on a mod­er­ate­ly pow­er­ful com­put­er. PC Mas­ter Race. Ever fuck­ing time.

And why is my best time on DuckStation about 15 sec­ond bet­ter than on Vi­ta? Part is the bet­ter fram­er­ate, I think, more clear vi­su­als, but al­so the con­troller. Vi­ta doesn't have the best er­gonom­ics, and the tiny stick makes it re­al­ly hard to have any kind of pre­ci­sion in your steer­ing. It's prac­ti­cal­ly im­pos­si­ble to have any fine steer­ing in Vi­ta (not that these con­trollers are best for dri­ving any­way, but with­out a ded­i­cat­ed steer­ing wheel, it's prob­a­bly the best I can get).

So any­way, what hap­pened when I tried tour­na­ment in DuckStation, fresh af­ter mi­grat­ing from Vi­ta? I re­al­ized I can use the bonus El Niño car af­ter com­plet­ing the knock­out, so I se­lect­ed it, and start­ed the ex­pert tour­na­ment. 4th place on Home­town. Yoo-hoo! Then the game told me I'm elim­i­nat­ed. WTF!? Any­way, I re­tried, and on sec­ond try I could win it, and the rest of the tour­na­ment wasn't a big deal. I don't think I even had to use save states here, plus you can save the tour­na­ment state be­tween races, so yeah. Win­ning the tour­na­ment award­ed me the Mer­cedes-Benz CLK-GTR, but not the Jaguar XJR-15. You have to win the be­gin­ner tour­na­ment if you want the Jaguar. No fuck­ing way, I can't be both­ered to do this again. Sigh. Al­so, un­like the au­to-save Win­dows ver­sion, here you have to go in­to the op­tions(!), then mem­o­ry card, and fi­nal­ly save set­tings to save the un­locked car(!!).

The Menu#

Enough of the tech­ni­cal bull­shit, let's look at the game. It starts with game set­up, where you can se­lect be­tween 5 race modes:

Menu0JXL PNGMenu1JXL PNGMenu2JXL PNG

In all modes you can se­lect be­tween two styles, ar­cade and sim­u­la­tion. Learn­ing from NFS2, I didn't even touch the ar­cade, maybe it wasn't a good idea. In all modes ex­pect prac­tice you can se­lect a skill lev­el be­tween be­gin­ner and ex­pert. Very grad­ual, yeah.

On tracks front, there's not much dif­fer­ence. For­ward/back­ward, mir­rored, night dri­ving, weath­er, records, the same as in the Win­dows ver­sion. And of course, track pre­sen­ta­tion:

Al­most the same, but with­out the hand-drawn map, and the click dur­ing the last sen­tence of the pre­sen­ta­tion:

Take it tight and fast, slid­ing your back in *click* through the turn to achieve suc­cess.

What you have on Win­dows is like play­ing a scratched au­dio CD and the play­er skips a bit. I have no idea how did they make it.

Track0JXL PNGTrack1JXL PNGTrack2JXL PNG

On cars front, there are more changes. On the tech­ni­cal side, you can't have cus­tom col­ors, and from car show­case, the in­te­ri­or panora­mas are miss­ing. The rest is pret­ty much the same, ex­cept car tun­ing has some com­men­tary on what the in­di­vid­ual op­tions do for re­tards like me. It on­ly has 9 playable cars com­pared to the Win­dows ver­sion's 12+ (19 if you have all re­gion­al & down­load­able cars), but at least there are no re­gion­al dif­fer­ences from what I can tell.

Car0JXL PNGCar1JXL PNGCar2JXL PNGCar3JXL PNGCar4JXL PNGCar5JXL PNGCar6JXL PNGCar7JXL PNG

Fi­nal­ly, you can se­lect your op­po­nents in sin­gle race and hot pur­suit mode. There's no class sys­tem in this game, when you have a sin­gle op­po­nent, you se­lect his car (no ran­dom), when rac­ing against a full grid, you can have the same car for every­one or ran­dom. When not rac­ing against a full grid, you can have traf­fic, but un­like the Win­dows ver­sion, you can se­lect the traf­fic in­ten­si­ty.

Gameplay#

I'll try to sum­ma­rize the dif­fer­ences here, this post is al­ready too long. First is, han­dling. It han­dles wild­ly dif­fer­ent­ly than the Win­dows ver­sion, to be hon­est, it's clos­er to NFS2. Sim­u­la­tion mode is pret­ty bad, your cars are al­most ac­cel­er­at­ing faster than brak­ing, and you have the weird bi­na­ry grip-or-slide thing from NFS2, ex­cept it's a bit less no­tice­able and hard­er to do slide con­sis­tent­ly. And when you fail to do it, you'll end up in the wall, be­cause these cars need a kilo­me­ter to stop, and al­most none of them have ABS (not even the su­per fu­tur­is­tic bonus car!). Oh, and usu­al­ly all you need is a lit­tle nudge to flip your car over! At least, it lands on its tires af­ter done spin­ning, most of the time.

No cock­pit view. Both the soft­ware Win­dows and PlayStation ver­sion of NFS2 had it, the Win­dows ver­sion of NFS3 had it, dun­no why it's miss­ing here. But as far as I can tell, nei­ther the PlayStation ver­sion of NFS4 nor 5 have it.

Po­lice is al­so weird. No po­lice scan­ner like in the Win­dows ver­sion, you don't re­al­ly know when the pur­suit be­gins or ends, it just kin­da hap­pens. You no longer have a tick­et counter like in the Win­dows ver­sion, in­stead every time when you're caught, you'll get ei­ther a warn­ing, a fine, or get bust­ed. What's the log­ic be­hind it? I have no fuck­ing idea. But on two lap races, af­ter get­ting fined for the sec­ond time, you still hear some­thing along the lines of next time you're ar­rest­ed, so I guess you can get caught the num­ber of laps you race still ap­plies, ex­cept some­times you get caught ear­li­er. Al­so, po­lice is fuck­ing bull­shit here, you don't even have to stop to be ar­rest­ed, it's enough to slow down a lit­tle bit. Or hit a road­block, even if you're able to con­tin­ue, most of the time they will catch you. Or flip over, even if you land on your tires. What the hell is this shit?! On the oth­er hand, spike strip is no not an in­stant fail, it just kin­da slows you down. Re­set­ting your car might help, at least I was able to get away af­ter a spike strip once, even though I was pret­ty close to the fin­ish line.

Night dri­ving is hor­ri­ble in this game, un­less you fuck up your gam­ma set­tings, you won't see any­thing fur­ther than 2 me­ters in front of you. You don't have light cones ei­ther, just a very sharp line per­pen­dic­u­lar to your view­port, what­ev­er is near­er than it is vis­i­ble, every­thing else is fuck­ing dark. And in po­lice mode, if you en­abled the CPU over­clock­ing, the po­lice sirens will go a bit crazy, but I still take that over the slideshow I get with­out over­clock­ing. I mean, this is what you have in DuckStation with­out over­clock­ing:

Some sol­id 9 FPS. I'm not sure how ac­cu­rate DuckStation is, 9 FPS looks way too low even in '98, and it runs with high­er fram­er­ates on my Vi­ta, but PSP/Vi­ta's PSX em­u­la­tion is not known to be the most ac­cu­rate, so I have no idea. But here's what you get with over­clock­ing:

A bit like dis­co, but still way bet­ter than the slideshow. (Al­so take note of the ici­cles on the signs, no such thing in the Win­dows ver­sion.)

The HUD is al­so sim­pler than the Win­dows ver­sion, no op­po­nent list, no non-ro­tat­ing min­imap, the fin­ish line is marked with a sin­gle green pix­el next to the track. But in­stead you can set map to radar mode, which means just hide the track from the map and zoom the fuck in. Might be use­ful to see bet­ter who is around you, but then you lose the map. Af­ter fin­ish­ing the race, you can view a re­play, but not save it for lat­er, like in NFS6. On PC, even the orig­i­nal NFS1 had sav­able re­plays. Ghosts and knock­outs are al­so un­sav­able. In short, this game feels like NFS3 run­ning on NFS2 en­gine.

Hidden tracks#

I'm not go­ing to lie, the main rea­son I tried this game was the hid­den tracks miss­ing from the Win­dows ver­sion. I kin­da played them us­ing mods for NFS4 (1, 2, 3, 4, 5), but I want­ed to see the orig­i­nal. Al­so TR02B! But not so fast, the nor­mal hid­den tracks first. You can on­ly un­lock them by en­ter­ing their re­spec­tive cheat codes as play­er names, and it's a ma­jor PITA with NFS3's two but­ton in­put method. And you have to re­do it af­ter each re­boot of the game, since this is not saved with your set­ting un­like oth­er, nor­mal­ly un­lock­able items. The tracks are:

Auto0JXL PNGAuto1JXL PNGAuto2JXL PNGAuto3JXL PNGAuto4JXL PNG
Cavern0JXL PNGCavern1JXL PNGCavern2JXL PNGCavern3JXL PNGCavern4JXL PNG
Scorpio0JXL PNGScorpio1JXL PNGScorpio2JXL PNGScorpio3JXL PNG
Space0JXL PNGSpace1JXL PNGSpace2JXL PNGSpace3JXL PNGSpace4JXL PNGSpace5JXL PNG
Room0JXL PNGRoom1JXL PNGRoom2JXL PNGRoom3JXL PNGRoom4JXL PNG

To be hon­est, I'm a bit dis­ap­point­ed by these tracks. The gen­er­al track qual­i­ty is a bit low­er than the nor­mal tracks, but I can ac­cept it, these are sup­posed to be East­er eggs. But. But... As you might be guess­ing from the screen­shots, you can't have op­po­nents on these tracks. Nei­ther po­lice nor night dri­ving nor weath­er. Records are not saved for these tracks, and prob­a­bly the worst of all, you have no mu­sic. I get it, they didn't want to com­pose mu­sic for these tracks, nor mess around with AI. But night dri­ving, weath­er, records and some gener­ic mu­sic, it should be some­thing you get for free (or al­most free) from the en­gine if you al­ready de­vel­oped it for the oth­er tracks.

And now, the dessert, TR02B! So hid­den it doesn't ac­tu­al­ly have a "re­al" name, TR02B is just the file­name of the track on the CD. And it's un­fin­ished, there are holes in the geom­e­try, there are place­hold­er items, AI goes crazy at places. It starts at the same place as Em­pire City, so like­ly they want­ed it to have a sis­ter track like all oth­er track pairs, but they scrapped the idea—most like­ly they couldn't fin­ish it on time, and they for­got the files on the CD.

To race this track, you have prac­ti­cal­ly two op­tions. One, re­place a dif­fer­ent track on the CD with TR02B. I didn't try this method be­cause... well, in the in­tro part, I men­tioned how fucked up the file sys­tem on PSX CDs are. The sec­ond op­tion is GameShark codes, and since DuckStation have sup­port for them, it looked like a much eas­i­er al­ter­na­tive. DuckStation even comes with a set of cheats for NFS3! Of course, en­abling TR02B is not among the list, so you have to load the Qt GUI, go to Sys­tem -> Cheats -> Cheat Man­ag­er, and add the fol­low­ing code (source) (prob­a­bly on­ly works with the USA re­lease):

301F78A7 0042
301F78BB 0041
301F8C41 0042
301F8C91 0042
301F8D6D 0041
301F8DA9 0041
301FAB0B 0042
301FAB1F 0041
301F8CB9 0042
301F8CE1 0042
301F8D59 0042
301F8DD1 0041
301F8DF9 0041
301F8E21 0041

I set Ac­ti­va­tion to Man­u­al, since this code on­ly needs to be in­ject­ed once. Af­ter done, you can en­able the cheat from the cheat menu (you do not need the GUI for this), then race on Em­pire City!

No­tice how it has a Re­drock Ridge as a load­ing screen, but with a dif­fer­ent back­ground than the re­al track. Ac­cord­ing to TCRF it's an ear­ly load­ing screen, but oth­er than the fin­ish line be­ing shift­ed a lit­tle, it's the same track as the fi­nal.

Redrock Ridge loading screenJXL PNGTR02B loading screenJXL PNG

Af­ter start, the min­imap goes crazy at mul­ti­ple points, and here AI can do un­ex­pect­ed things too, like sud­den­ly stop­ping in front of you. And gen­er­al­ly don't try to race against the AI on this track, AI was def­i­nite­ly not trained for this track (for ex­am­ple, at 2:47 I'm in the lead with 4 sec­onds, then the next mea­sure­ment comes at 4:05 where I have an al­most 54 sec­onds lead, the AI sucks hard at the last sec­tion). Dy­nam­ic sound is al­so borked, you hear the same few sec­onds long loop dur­ing the whole race. At around 1:00 it branch­es off to TR02B, and you can see things are large­ly un­fin­ished here, but the track is still playable. It's a kind of pity they nev­er fin­ished this track, and gave us those 5(!) half-assed hid­den tracks above in­stead. This could have showed the nicer side of the con­crete jun­gle city, with the al­most cult like of­fice you have in the Win­dows ver­sion.

Then from now on, I'm go­ing to com­pare the Win­dow ver­sion's Em­pire City with the PlayStation ver­sion's Em­pire City with TR02B where ap­plic­a­ble. First is just the start line:

Race start, Empire City WindowsJXL PNGRace start, Empire City PlayStationJXL PNGRace start, TR02BJXL PNG

The main dif­fer­ence here is the sky­box. The Win­dows ver­sion has an or­ange cloudy (or more like Per­lin noise) sky­box, with some sil­hou­ette of a city be­tween the track and the sky­box. In the PS ver­sion, the sky­box is just a gra­di­ent, and the sil­hou­ette is more vis­i­ble (prob­a­bly to hide the ug­ly sky­box). The tex­tures use near­est fil­ter­ing in PS, so every­thing looks block­i­er even if the 3D geom­e­try has the same res­o­lu­tion. The lights al­so look dif­fer­ent (yel­low in­stead of light, and big­ger, prob­a­bly to com­pen­sate for the miss­ing res­o­lu­tion on nor­mal PS), and the gen­er­al light­ing of the track is al­so a bit dif­fer­ent. On­to TR02B, I think this is the on­ly case in NFS3 where the sec­ond, more ad­vanced track is ac­tu­al­ly brighter than the nor­mal, but this might be just be­cause it's un­fin­ished... The sky is al­so weird, I think it was sup­posed to be green, but the brown­ish gra­di­ent re­mains, and the city sil­hou­ette is lack­ing an al­pha chan­nel in­stead, and it has a green sky with clouds. I think they want­ed to have clouds in PS Em­pire City too, but they ran in­to the lim­i­ta­tions of PSX, so they scrapped it.

Then, on­to the sec­ond short­cut you have on the track:

Shortcut entrance, Empire City WindowsJXL PNGShortcut entrance, Empire City PlayStationJXL PNGShortcut entrance, TR02BJXL PNG

Look­ing at the pic­tures, I think it's just not near­est vs bi­lin­ear be­tween Win­dows and PlayStation, I think they use slight­ly dif­fer­ent tex­tures. Like how the soft­ware and HW ren­der­er us­es dif­fer­ent tex­tures on Win­dows NFS2. TR02B is lack­ing those lit­tle bar­ri­ers at the en­trance (and every­where else).

Shortcut exit, Empire City WindowsJXL PNGShortcut exit, Empire City PlayStationJXL PNGShortcut exit, TR02BJXL PNG

The oth­er side of the short­cut, the same thing. It's a bit weird, though, in the Win­dows ver­sion you have light un­der the bridge, while in the PlayStation ver­sion, you have it out­side, but de­spite this, in the PSX ver­sion, the wood­en ceil­ing is more vis­i­ble.

Then we get to the bridge un­der­pass (where the road goes in spi­ral):

Under bridge—far, Empire City WindowsJXL PNGUnder bridge—far, Empire City PlayStationJXL PNGUnder bridge—far, TR02BJXL PNG

Not much to see here, ex­cept the build­ing in the back­ground, TR02B seems to have a dif­fer­ent (like­ly place­hold­er) ver­sion of it. But go­ing clos­er:

Under bridge—near, Empire City WindowsJXL PNGUnder bridge—near, Empire City PlayStationJXL PNGUnder bridge—near, TR02BJXL PNG

On the Em­pire City tracks, the last lamp be­fore the bridge has no lamp­post, it's in the wall. But in TR02B the wall is a bit fur­ther, and there's a lamp­post. I've man­aged to crash in­to it a few times...

Next comes the tun­nel, and I'm go­ing to present two sets of im­ages here:

Tunnel—far, Empire City WindowsJXL PNGTunnel—far, Empire City PlayStationJXL PNGTunnel—far, TR02BJXL PNG
Tunnel—near, Empire City WindowsJXL PNGTunnel—near, Empire City PlayStationJXL PNGTunnel—near, TR02BJXL PNG

No­tice in the PlayStation's ver­sion of Em­pire City, there's clear­ly a fork in the road, and the left branch is blocked. In the Win­dows ver­sion, it's a sol­id wall, with­out any hint of a road be­ing there. No won­der nev­er play­ing the PS ver­sion be­fore I didn't think there's a pair of this track be­fore see­ing this in­fo on the in­ter­net some­where. Al­so, the tun­nel is blueish in the PS ver­sion, while it has bright yel­low lights on Win­dows. And TR02B's tun­nel is quite dif­fer­ent, with a dif­fer­ent build­ing tex­ture, and no ex­tra light­ing in­side (but it's still more yel­low­ish).

Next, leav­ing TR02B be­hind and trav­el­ing along Em­pire City, I took a screen­shot of the po­lice he­li­copter be­cause I thought it's dif­fer­ent be­tween the two ver­sions, but not re­al­ly.

Police helicopter next to the hill, Empire City WindowsJXL PNGPolice helicopter next to the hill, Empire City PlayStationJXL PNG

How­ev­er, take note of the cool moon vis­i­ble on the Win­dows ver­sion.

Next, the short­cut af­ter the park signs (when you stay at the right side of the track, in­stead of go­ing down with the road):

Parking shortcut, Empire City WindowsJXL PNGParking shortcut, Empire City PlayStationJXL PNG

The last sec­tion, where you go through the build­ing, is sim­ply miss­ing from the PS ver­sion! This al­so makes this short­cut way less lu­cra­tive, as it's not short­er but you still have the huge jump.

Next, the place where the two tracks join, from the pre­vi­ous turn:

Track merge—far, Empire City WindowsJXL PNGTrack merge—far, Empire City PlayStationJXL PNG

On the right side of the Win­dows screen­shot, you can see the ex­it of the short­cut, miss­ing from the PlayStation ver­sion. But let's go clos­er:

Track merge—near, Empire City WindowsJXL PNGTrack merge—near, Empire City PlayStationJXL PNGTrack merge—near, TR02BJXL PNG

On the PlayStation ver­sion, it's just lit­tle a con­crete bar­ri­er, while the Win­dows ver­sion has a mas­sive wall. But note they didn't ex­tend the wall un­til the bridge like thing at the top, a road be­hind is still vis­i­ble. I al­ways thought this is an­oth­er short­cut, but of course I could nev­er find the en­trance to it... On TR02B, this part of the track is clear­ly un­fin­ished, even though the parts shared with Em­pire City are al­most at the fi­nal ver­sion every­where else.

Fi­nal­ly, the last short­cut:

Yet another shortcut, Empire City WindowsJXL PNGYet another shortcut, Empire City PlayStationJXL PNGYet another shortcut, TR02BJXL PNG

It has a green light ef­fect on the PlayStation. Al­so note the wall/bar­ri­er in front of it, it's miss­ing from TR02B.

Af­ter this foren­sics analy­sis of Em­pire City and TR02B, there's one last thing I want to show. Some mad­man ac­tu­al­ly fin­ished this track, and made it avail­able for Win­dows NFS4. Mad props to him! Meet Coal Har­bour, which might or might not be the re­al name of TR02B.

With a prop­er load screen! Al­so note this ver­sion is based on NFS4's Em­pire City, so the shared parts are the same as Em­pire City, not as what you have in TR02B, in­clud­ing the yel­low­ish tun­nel where they branch off.

And a little cheat#

I men­tioned how fuck­ing dark night mode is here, it was a night­mare on the Vi­ta with ze­ro bright­ness and con­trast con­trols. But on DuckStation, you can have post­pro­cess­ing GLSL shaders... and it gave me an idea. Un­for­tu­nate­ly it on­ly seems to work with the bloat Qt GUI, but it could be still a life-saver if you maxed out all the bright­ness set­tings your mon­i­tor can do. The shad­er is not com­pli­cat­ed, the an­no­ta­tions re­quired by DuckStation take up more lines than the ac­tu­al code.

/*
[configuration]

[OptionRangeFloat]
GUIName = Limit
OptionName = LIMIT
MinValue = 0
MaxValue = 1
StepAmount = 0.01
DefaultValue = 0.2

[/configuration]
*/

void main()
{
  vec4 color = Sample();

  if (dot(color.rgb, color.rgb) < LIMIT*LIMIT)
    color.rgb *= (1/LIMIT);

  SetOutput(saturate(color));
}

Put it in­to $DUCKSTATION_HOME/shaders, and en­able it un­der Post-Pro­cess­ing when need­ed. It has on­ly one op­tion, set­ting the bright­ness lev­el, every­thing dark­er than the lim­it will be scaled to 0..1. Not the pret­ti­est ef­fect, but gets the job done.

Without filterJXL PNGWith filterJXL PNG

This post is part of se­ries nfs: 1, 2, 3:HP (W, PSX), 4:HS, 5:PU, MCO, 6:HP2