28 May 2014 no$psx v1.9 [download]
  • webpage: moved from http://nocash.emubase.de/ to http://problemkaputt.de/
  • hc05: low-level cdrom sub-cpu emulation (motorola mc68hc05 with cdrom bios)
  • hc05: setup: allows to select new low-level emu, older/faster high-level emu
  • hc05: setup: ignores hc05 low-level option if file MC68HC05.ROM is missing
  • hc05: setup: forces reset when changing between low-level and high-level emu
  • hc05: setup: prevents skipping mips-bios-intro in low-level cdrom emulation
  • hc05: cpu: emulates motorola hc05 opcodes and hc05 onchip I/O ports and timer2
  • hc05: cpu: switches between mips/hc05 (on interval and on 1F80180xh access)
  • hc05: io: emulates servo amplifier and signal processor CX(nn) commands
  • hc05: io: emulates servo/signal SENSE result (with SERIAL SENSE on new chips)
  • hc05: io: emulates decoder cmd/param/reply fifos and sector data transfers
  • hc05: io: emulates SUBQ spi bus transfers (for position and table of contents)
  • hc05: scex: simulates serial scex bitstream (when DISK,near POS0,SINGLE speed)
  • hc05: scex: simulates new subq channel "encrypted" scex signal (version vC3)
  • hc05: disc: creates SUBQ data for TOC (with point A0h,A1h,A2h,01h..NNh)
  • hc05: disc: skips nonsense track 0 (lead-in) entries in .nrg "CUES" chunks
  • hc05: sled-mech: supports sled move via FastSled and TrackJump commands
  • hc05: sled-mech: supports sled brake (with reduced kick and move voltages)
  • hc05: sled-mech: computes non-linear sector number versus sled seek distance
  • hc05: mech: simulates DOOR OPEN switch period (required to sense disc changes)
  • hc05: mech: simulates POS0 switch (required for sled reverse lead-in seeking)
  • hc05: mech: nag feature: simulates GFS=bad on spindle speed change (eg.spinup)
  • hc05: mech: nag feature: forces GFS=bad and FOK=bad when disc missing
  • hc05: audio: forwards xa-adpcm data (on adpmnt) and cd-da data (when demuted)
  • hc05: tty: logs incoming cmd/param fifo and outgoing irq/reply fifo transfers
  • hc05: tty: logs CX(nn) commands (with description on known command/params)
  • hc05: tty: logs most recent MM:SS:FF alongsides with CX(nn) commands
  • hc05: bios: cdrom-image-loader treats 16.5K ".ROM" files as cdrom bios-images
  • hc05: bios: autodetects chipset and oscillator (via CXDnnnn strings in BIOS)
  • hc05: debug: supports f6-key set pc, f4-key break, f7-key trace
  • hc05: debug: ctrl+t toggle between MIPS and HC05 debug view (if low level on)
  • hc05: debug: optional bad I/O warnings (with CODE window moved to fault addr)
  • hc05: debug: integrated low-level mode in debugger (re_read_io, vac, iomap)
  • hc05: snapshots: saves hc05 registers and memory and low-level/chipset type
  • hc05: help: added summary of used CX(nn) values for vC1,vC2,vC3 versions
  • hc05: help: add notes on sled motor control methods (move, brake, nonlinear)
  • hc05: help: add info on vC3 specials (TzcOut, NewScex, CX(nn0000)-padding)
  • hc05: help: add info on oscillator clocks, and openbus-reading effects
  • hc05: help: add motorola bootstrap info and cdrom bios dumping info/link
  • cdrom: doesn't set stat.read/play bits until seek completion (gran turismo 1)
  • cdrom: slightly more accurate setloc (kept pending after seek_l/seek_p)
  • cdrom: computes average time per seek distance (faster than real hw though)
  • help: added note on DTL-H2000 using a Sony SPC700 sub-cpu (not Motorola HC05)
  • setup: allows to select 0,1,2,or 8 memcards (workaround for problem in "One")
  • debug: optional MIPS and HC05 tracelog function in TTY window (as in no$sns)
  • debug: new TTY buffer size option (1/10/100MB limit, with optional stop/wrap)
  • debug: resolves ASCII datazones and a0h/b0h/c0h jump lists for DTL-H2000 bios
  • tty: added "tty_force_newline" at begin of auto-generated (non-user) lines
  • cdrom: always uses low-level sector buffer (removed high-level buffer relicts)
  • help: added info on DTL-H2000 memory and atcons/dip/led/etc I/O ports
  • help: added 176-pin CXD2941R pinouts (SPU+CDROM+SPU_RAM on PM-41(2) boards)
  • help: notes on missing cdrom commands in vC0 (1Dh+1Eh+5xh + 19h,22h..25h/7xh)
  • help: fixed apu min/max typos, and cpu j/jal F0000000 typo (thanks mitikoro)
  • help: note on cache/cop0 info in LR3330/L64360 datasheets (thanks LostTemplar)
  • a22i: added ".pack_crc32 result,initial" directive (use with ".pack_org")
  • a22i: added ".pack_chksum_xor8bit result" and ".pack_chksum_add8bit result"
  • snapshot: bugfix: removed duplicated "SECT" chunk name (cdrom sector buffer)
  • help: added new "PSX Dev-Board Chipsets" chapter (for DTL-Hnnnn boards, etc)
  • debug: fixed tty bios patch for cex-1000 (opcode 0FF019CDh instead 0FF019E1h)
  • bios: gui doesn't mute cd-audio (eg. required for games like wipeout 2097)
  • bios: recognizes GetID result for unlicensed mode2 disks WITH audio tracks
  • debug: allows editing values in REGS window (alternately rx=nn in CODE window)
  • bios clone: sends secret unlock commands (works/tested: boots without modchip)
  • a22i: added mc68hc05 assembler (for testing/re-assembling cdrom sub-cpu bios)
  • a22i: resurrected nocash-syntax in online assembler (if disass in nocash mode)
  • help: hardware numbers: added sony's DTL-Hxxxx developer tool hardware numbers
  • gpu/dma2: pre-checks linked-list size (and abort/warn if endless-link-chain)
  • spu: supports multi-block manual ram write (repeated spucnt=C010h; bios intro)
  • spu/irq: emulates i_stat edge-triggering (gex,finalfantasy9,tokimekimemorial2)
  • cdrom/irq: emulates i_stat edge-triggering (though rarely needed in practice)
  • emu: emulates dirt effects on 8bit/16bit/32bit writes to various I/O ports
  • help: added details on multi-block manual spu ram writes, and on spu ram addr
  • help: extra note on I_STAT bits being edge triggered (was already mentioned)
  • help: unpredictable things: added details on 8bit/16bit/32bit write effects
  • help: memctrl correction: 1F801020h.16-17 and FFFE0130h.8,11-31 are fully R/W
  • spu: ignores writes to "read-only" registers (SPUSTAT and ENDX voice flags)

  • 03 Mar 2014 no$psx v1.8 [download]
  • new: plain gaming-version (miniaturized nonsense emulator without debugger)
  • snapshots: doesn't touch cdrom status/door on cdrom-loading (preserve snap)
  • sound: currently disabled new zigzag for slow 18900Hz xa-adpcm (eg. dracula)
  • dma: fixed crash on num_blks=0 (should act as 10000h) (Where's Derpy spu/dma)
  • dma: updates dma address/length registers in special sync/chopping modes
  • setup/sound: volume slider (optionally hardware/mixer or software/multiply)
  • gpu/bugfix: wraps when DisplayBase+DisplayHeight exceeds 512-lines vram size
  • disass: shows valatcur for load/store opcodes (now also in native syntax mode)
  • a22i: recognizes native mips assembler syntax (alternately to nocash syntax)
  • a22i: fixed crash on complex numeric expressions with missing close bracket
  • a22i: works without space character between labels and greater/less symbols
  • a22i: uses predef <opc> in opcode list, refuses 'pop' if SP-load-delay busy
  • gpu/speedup: omits rectangle tex-blending on color=808080h (eg. Where's Derpy)
  • iomap: adds rect/fill/vram2vram time to gpu emu load (formerly only poly/line)
  • bios clone: dummy A(9D) opcode for "set_conf_without_realloc" (Roll Boss Rush)
  • help: added info on homebrew "set_conf_without_realloc" bios hack/patch
  • snapshots: survives snap loading even if old cdrom-image folder doesn't exist
  • snapshots: added better (but slower) LZ-based .SNA file compression (optional)
  • snapshots: includes BIOS ROM (for loading regardless of bios versions/clones)
  • expansion rom: prevents skip_intro patch on expansions (which may hook intro)
  • expansion rom: prevents tty_enable patch for caetla (which needs bios chksum)
  • expansion rom: supports actionreplay and xplorer io ports (namely switch=on)
  • expansion rom: supports actionreplay 2x128K mapping and normal xplorer mapping
  • bios-clone: fixed rename-function (added mov r4,r16)(ridgeracer sav overwrite)
  • gpu: prevents better-than-real-quads on concave/twisted quads (crashbandicoot)
  • timers: supports separate dest/overflow events, completion flags, dest changes
  • help: added specs and cautions on cdrom autopause (or autostop) feature
  • cdrom: implemented autopause feature with INT4(stat) on end of track (Rayman)
  • gpu: CpuToVram wraps from x=3FFh to X=000h with Y=SAME (Alundra memcard save)
  • gpu: fixed polygon height limit (don't draw if height>=512) (for Spiderman)
  • cdrom: implemented authentic 2nd_response timings (Gundam Battle Assault 2)
  • help: added 'CDROM - Response Timings' chapters (some min/max/average timings)
  • help: corrected cdrom GetID description (only one response on DoorOpen/SpinUp)
  • vram viewer: forces "swap_buffers" after timeout (avoids dracula mem overflow)
  • cpu: emulates cop0 bpc/bpcm opcode fetch breaks (for cheat device booting)
  • help: fixed cop0 debug break description (bpc-then-bpcm, not vice-versa)
  • bios-clone: added dummy "add r4,0,385h" opcode at (for Xplorer bios hook)
  • bios-clone: moved gui-entrypoint to 80030000h (for Action Replay bios hook)
  • cdrom/bugfix: bugfixed new cdrom-dma timing; minus intcount (dino crisis 1-2)
  • fileloader: allows to load/debug/emulate expansion roms (.rom and .fcd files)
  • help: new Cheat Devices chapter (code formats, i/o ports, decryption, etc)
  • web: new no$psx forum: http://ngemu.com/forums/no-psx-discussion.147/

  • 26 Nov 2013 no$psx v1.7 [download]
  • gpu/detail: added dithering for tex-blended POLYs (unlike tex-blended RECTs)
  • gpu/detail: added dithering for monochrome LINEs (unlike mono POLYs and RECTs)
  • gpu/detail: faster gouraud rendering when dithering is off (no dummy dither)
  • gpu/bugfix: swapped setmask/chkmask in cpu-to-vram transfer (fixes RC Revenge)
  • gte/detail: supports 32bit rtps/rtpt overflows (fixes R4 Ridge Racer Type 4)
  • dma: added delay before DMA1 IRQs (fixes DinoCrisis1+2,FearEffect,Xenogears)
  • dma: pauses CPU during DMA (more accurate and releases cpu emulation load)
  • dma: accepts non-standard control values (with warning) (instead of rejecting)
  • mdec: low level IDCT emulation (slow, used only for nonstandard scaletable)
  • mdec: accurate RLE emulation (with rounding, saturation, and quant disable)
  • mdec: emulates status bit31 (data.out.fifo not empty) (for manual reading)
  • dma/mdec: removed pusha/popa pairs (allows to modify mips intcount register)
  • help: gpu: corrected dithering info (different cases for polys/lines/rects)
  • help: add notes on CPU being stopped during DMA (and resumed between blocks)
  • help: added info on the two DMA "start" flags (start/busy and start/trigger)
  • help: added list of commonly used DMA control register values for DMA starting
  • help: added basic info on DMA transfer timings and DRAM hyper page mode
  • help: added info on DMA chopping mode (runs CPU during gaps in DMA transfer)
  • help: mdec/y_to_mono: supports only max 9bit (bigger values aren't saturated)
  • help: mdec/idct: added note that scaletable uses upper 13bit only (not 16bit)
  • help: mdec/idct: low level idct formula (diagonally mirrored matrix multiply)
  • help: mdec/rle: rle result is rounded up (plus 4 before div 8)
  • help: mdec/rle: rle result is saturated to signed 11bit range
  • help: mdec/rle: q_scale=0 forces n*2 instead of n*qt[k], or n*qt[k]*q_scale
  • help: fast mdec decoder: simplified idct_core (flipped src/dst instead of x/y)
  • help: fast mdec decoder: fixed "scalezag" pseudo code (divide entries by 8)
  • help: added IC703 "SONY CXA1791N" pinouts (RF Amplifier on PU-18 boards)
  • help: added notes on Garbage Area at Address 00000000h (for R-Types/FadeToB)
  • debug: profiler supports dma transfer logging (shown as "DMAn.subfunctions")
  • debug: iomap resolves timer clock-source, sync-mode, and some timer flags
  • debug: tty irq-logging shows dma channel names(s) that have caused dma-irq3
  • debug: tty gpu-command-logging (can log more than 1 frame, unlike vram viewer)
  • screenshot: fixed num_colors entry in truecolor bmp header (1 SHL bpp AND 1FE)
  • screenshot: fixed auto-generated screenshot filenames (.bmp instead .gif)
  • bios: fixed messed-up stack in bios clone's do_exec (fixes developers demo)
  • bios: applies [00000004h]=275A0C80h garbage (required for bugged FadeToBlack)
  • bios: applies [00000000h]=00000003h garbage (required for bugged R-Types)
  • bios: skips "patch_missing_cop0r13_nonfunctional" (bugged hitmen/minimum demo)
  • cd/loader: accepts cue/bin with 920h-byte sectors (eg. pdx-rh.cue demo)
  • controls: changed default to digital joypad (avoids incompatibility issues)

  • 11 Oct 2013 no$psx v1.6 [download]
  • cd/help: added notes on sub-cpu mainloop/response/priority/timing/queue/flags
  • cd/emu: simplified 1st/2nd/3rd response slots (instead overcomplicated queue)
  • debug: optional IRQx logging to tty window (plus detailed cdrom INTxx info)
  • cd/emu: emulates exact filter/realtime handling for adpcm and data sectors
  • cd/help: added notes on data/adpcm sector filtering/delivery on cdrom-reading
  • cd/help: added almost perfect xa-adpcm zig-zag-interpolation formula/tables
  • cd/help: added note on unitialized six-step adpcm interpolation counter
  • cd/help: added flowchart for using sound map mode (with random 3-slot caution)
  • cd/emu: emulates 8bit xa-adpcm decompression (unlike normal 4bit xa-adpcm)
  • cd/emu: emulates xa-adpcm zig-zag-interpolation (37.8 to 44.1kHz resampling)
  • cd/emu: bugfixed xa-adpcm (did destroy sixstep "extra_offhold" inside of lop)
  • cd/emu: emulates newly discovered MotorOn command (and its various errors)
  • cd/help: added some basic notes and waveform example for xa-emphasis feature
  • cd/emu: emulates invalid xa-adpcm filter=4..15 and invalid shift=13..15 values
  • cd/emu: added basic soundmap emulation (works at least to play one 900h unit)
  • cd/help: added notes on invalid xa-adpcm filter=4..15 and shift=13..15 values
  • spu: bugfixed cd.audio.capture buffer (is NOT affected by cd.audio volume)
  • cd/help: added notes on newly discovered secret_unlock feature (command 5xh)
  • cd/myth/help: eliminated "Standby" myth (actual function of cmd 7 is MotorOn)
  • cd/help: added notes on peak bytes for Play+Report (and incomplete GetQ peak)
  • cd/help: added details on purpose/function of all cdrom test commands
  • cd/help: discovered more test commands (supported on older PSX consoles only)
  • cd/help: added specs for CXA1782BR cdrom servo amplifier registers
  • cd/help: added specs for CXD2510Q cdrom signal processor registers
  • cd/help: added specs for CXD2545Q cdrom combined servo + signal processor
  • cd/help: added specs for CXD1199BQ/CXD1815Q cdrom decoder/fifo registers
  • cd/help: added specs for MC68HC05 on-chip I/O Ports (and their usage in psx)
  • cd/help: added notes on GetID's ATIP byte, and on POS0 flag in sub_func 21h
  • cd/help: removed nonsense sub_function numbers from ancient cdinfo.txt
  • cd/help: added info on some formerly unknown CD-XA bytes (in the LEN_SU area)
  • cd/help: added subheader CI coding info bits (adpcm emphasis and 8bit/sample)
  • cd/help: added notes on more cd-xa fields in primary volume descriptor
  • poc/help: added some pocketstation details (LED, mirrors, exceptions, etc)
  • help: added notes on PU-7 chipset (different cdrom/spu/gpu/cpu/bios chips)
  • bios: added patch_uninstall_early_card_irq_handler_efficient (thanks shendo)
  • gui: setup uses asia-compatible TabControl instead of unreliable PropertySheet
  • dma3/cdrom and dma6/otc: treats len=0 as length=10000h words (=256 kbytes)
  • cdrom data fifo: uses [800h-8] or [924h-4] as padding-byte after sector end
  • gui: fullscreen mode preserves real aspect ratio (padded with black border)
  • gui: fullscreen mode moved to context menu (instead of old setup option)
  • gui: created mouse-shape-less No$helpClass (avoid flickering mouse pointer)
  • debug: supports MC68HC05.ROM bios loading (16.5K) (for disasm at 50001000h)
  • debug: re-arranged gte registers in iomap (fixed overlapping text fields)
  • debug: added dummy-mappings: 50000000h=mc68hc05 memory/mc68hc05 disassembler
  • debug: added dummy-mappings: 60000000h=vram, and 70000000h=spu-ram
  • debug/help: added disassembler and specs for mc68hc05 cpu (cdrom coprocessor)
  • spu/help: corrected spu-irq description (irq9 does trigger also on spu-dma)
  • credits: big thanks to psxdev.ru for cdrom 68hc05 sub-cpu decapping

  • 23 May 2013 pocketstation emulation released [link]
    released pocketstation emulation (as part of no$gba v2.7) (the pocketstation is a PSX memory card with LCD screen; it's emulated in no$gba because GBA and pocketstation are both based on ARM processors).


    25 Apr 2013 no$psx v1.5 [download]
  • multimachine: implemented cdrom load to "all machines" option (default)
  • multimachine: fixed cdrom loader load to "1st/2nd/3rd/4th machine" options
  • multimachine: bugfix: doesn't try to use "seed_vals" for newly added machines
  • multimachine: bugfix: doesn't hang on invalidated windows of removed machines
  • multimachine: apply autostart/reset only to machines with newly loaded cdroms
  • multimachine: apply_bios_patches now applied to ALL machines (eg skip intro)
  • sizing: added fullscreen mode, and added sizing/maximize in multimachine mode
  • memcards: now saved as *.mcd in new MEMCARD subdirectory (formerly no$psx.mcN)
  • memcards: first card: <cdrom_filename>.mcd (auto-excluding "(DiscN)" etc.)
  • memcards: others: "_MM_N_X_mcd" (MM=machine1..12, N=slot1/2, X=sub-slotA..D)
  • memcards: prevents <cdrom_filename>.mcd creation on sector 03Fh dummy writes
  • memcards: added support for multitap memcards (IDs 82h..84h in slot 1..2)
  • gpu: help/emu: added textured-rectangle-xyflip feature (thanks William Birkin)
  • gte: help/emu: reproduced real GTE division inaccuracies (thanks ogamespec)
  • cdrom: help/emu: cdrom is initially demuted (fixes missing audio in v1.3+v1.4)
  • cdrom: ignores nonzero writes to unused bits (without suppressing other bits)
  • cdrom: removed "cdrom response overkill" warning (some games may survive it)
  • spu: emulates spu-capture-buffer interrupt (needed for crash team racing)
  • spu: allows glitchless spu-ram-read (as far as [1F801014h].bit24-27=nonzero)
  • spu: added "generate_sample_till_now" for updating spustat and endx on reads
  • spu: better key_on handling (supporting lead_delay, and forced adpcm start)
  • spu: better LOOP-END behaviour (ENDX flag, plus optional mute+release)
  • spu: implemented fully functional 8bit/32bit reads from 16bit spu registers
  • spu: help/emu: dumped/documented gauss_table and emulated adpcm interpolation
  • spu: help/emu: tested/documented pitch_modulation effect and emulated it
  • spu: help/emu: max adpcm pitch (clip values in range 4000h..FFFFh to fastest)
  • help: added info on no$psx debug hotkeys and memory access breakpoints
  • help: added info on glitchless spu-ram-read (used by Herc's Adventures)
  • help: added info on cdrom sector buffer (has 8 slots, but only 2 accessible?)
  • help: added some basic notes on psx-based arcade cabinets
  • pinouts: added IC106-109,IC202,IC303,IC305,IC307,IC309,IC501,IC701,IC723,ICsss
  • pinouts: improved IC304,IC602 pinouts (also IC405, but it's still unclear)
  • gui: created own help engine (instead of microcrap's suicidal windows .hlp)
  • gui: discovered and fixed major resource leak (destroymenu on context menu)
  • debug: added user cycle-counter in iomap (profiling purposes), added ctrl+e
  • debug: added optional DMA logging in TTY window (shows chn,addr,len,ctrl,name)
  • bios: tweaked "bizarre_outdated_pad" function to accept joypads in analog mode
  • vram viewer: bug-fixed "@@app_raw_blend" (test bit0, instead of test "al")
  • webpage: updated info on my current monetary stats (small donations welcome)
  • webpage: updated txt/htm versions of the psx-spx playstation specifications

  • 19 Mar 2013 no$psx v1.4 [download]
  • gpu: vram-fill-cmd: fixed size/wrapping/rounding/masking for GP0(02h)
  • gpu: vram-copy-cmd: fixed size/wrapping (die hard trilogy 2 uses xsiz=FFFEh)
  • cdrom loader: loads some relevant cdrom "root" sectors (with date/region info)
  • cdrom: for .exe files, forwards region from EXE header to cdrom licence sector
  • cdrom: produces SCEx string matched to region (from cdrom licence sector)
  • cdrom: supports setloc+play (without seek command) (used by Tactics Ogre)
  • video: matches game-window-height to pal/ntsc region (and width to 4:3 ratio)
  • video: allows free game window sizing (with snapping near N*100% zoom factors)
  • controls: automatic analog/digital joypad mode support (based on iso date)
  • controls: emulates analog joypad (with analog axes, config cmds, and L3/R3)
  • controls: emulates analog joystick (with ID=5A53h, without L3/R3 buttons)
  • controls: emulates namco-guncon-lightgun (via mouse)
  • controls: emulates sony-mouse-controller (via mouse)
  • controls: emulates dancemat (via Q,W,E,A,D,Z,X,C or numeric keypad)
  • controls: suppresses L3/R3 buttons in digital joypad mode
  • help: added caution on delay between slot.sel and 1st.cmd.byte (analog pad)
  • help: added plugging and unplugging cautions for controllers and memory cards
  • help: added info on analog joypad range (mechanical/digital/centering areas)
  • help: added dance mat specs (as far as known; which leaves many questions)
  • help: added notes on unknown mouse bits and on konami lightgun "x0h" byte
  • help: added lots of basic info on the different psx fishing controllers
  • help: added some basic info on i-mode adpator (part number and list of games)
  • help: added note on super-early irq10 lightgun patch (hooked 00000080h vector)
  • help: added multitap specs (memcard access, and two controller access methods)
  • help: added note on BIOS "buNN:" support (and problems) for multitap slots A-D
  • help: added note on cdrom auto-pause function for end-of-audio-tracks
  • help: added component list/chipset pin-out for multitap and digital/analog pad
  • help: corrected guncon specs (VERY different as in sporting clays source code)
  • help: corrected gpu vram fill/copy command specs (size/wrapping/rounding/etc)
  • help/cdrom: specs and support for older v1 (and v0) .cdz file format versions
  • controls: allows to assign analog-PC-axis as digital-PSX-button (xbox 360 pad)
  • debug: added optional joypad-command logging to TTY window (see TTY menu bar)
  • bios: pad_card_sweep_stuck_ack (when possible sweep stuck ack before access)
  • bios: pad_card_timeout_value (prevent hanging on stuck ack during access)
  • bios: pad_card_post_sel_delay (for slow devices like mouse and analog joypad)

  • 26 Jan 2013 no$psx v1.3 [download]
  • video: new rendering modes: 32bpp (mostly for MDECs), 8bpp (for old PCs), Auto
  • video: supports horizontal screen centering and left/right screen borders
  • video: matched PAL vertical centering to values used by "majority" of games
  • video: fixed lower-border rendering (always using xsiz instead xsiz_div16)
  • video: optional forced-automatic-centering (recommended for chaotic PAL games)
  • video: optional better-than-real rendering with quads instead of triangles
  • gpu: supports linestrips with uncommon end-codes (Wild Arms 2 uses 50005000h)
  • cdrom: supports .sub files (for libcrypt, and for .ccd's without index 0)
  • cdrom: supports .cdz files (and optionally deleting them after decompression)
  • cdrom: supports error on "standby" command (used by Nightmare Creatures 2)
  • cdrom: supports (de-)mute (avoid noise during modchip detect in Dino Crisis 1)
  • cdrom: seek+setloc goto sectors before target (not to target) (tomb raider 2)
  • cdrom: seek aborts reading (for Wild Arms 1 which lacks preceeding pause cmd)
  • cdrom: seek updates data for any following getloc (needed for Resident Evil 1)
  • cdrom: added getloc_l errors during seek (required for legacy of kain intro)
  • cdrom: added newly discovered cd xa adpcm-buffer-empty-flag (1F801800h.bit2)
  • cdrom: fixed subchannel-Q crc_16_ccitt byte-order (crc must be big-endian)
  • cdrom: odd stuff like setloc+read+setloc+read+pause+read+pause+read combos
  • vram-viewer: shows logged GPU command origins (CPU PC and DMA start/link)
  • vram-viewer: shows laser-arrow for GP0(E3h,E4h,E5h) commands draw area/offset
  • vram-viewer: allows tree-access after run (fill_3d_poly_tree_if_any_if_needed)
  • vram-viewer: prevents mishandled ESC-key in hex-gpu-command child window
  • debug: dynamic data/break-list allocation (no more limit on .sym datazones)
  • bios: added "patch_missing_cop0r13_14opcodes_k0_k1" variant (ridge racer)
  • help: added details on gpu-linestrip end-code and various new cdrom details
  • help: added "information" on Xe Multi System Emulator's CD Image File Format
  • help: added notes on chaotic screen centering values used by most PAL games
  • icon: psx button-style icon symbols, at 12x12,16x16,32x32,48x48 pix sizes
  • web: uploaded photos of the psx-xboo bios and parallel port upload circuit
  • web: added nonazi logo (we are no longer mass-murdering ourselves in germany)

  • 06 Jan 2013 no$psx v1.2 [download]
  • audio: supports 16bit sound output (less noisy on compressed adpcm samples)
  • audio: supports mono output or disabled sound output (without crashing emu)
  • emu: avoids triggering f8_brk_handler upon sp=FFFFFFFFh (Crash Bandicoot 3)
  • emu: avoids warnings on writes to invalid io ports (unless warnings enabled)
  • video: supports GP0(35h,37h,3Dh,3Fh) unused-shading commands (castlevania)
  • video: added display brightness option (nonlinear bright, or linear dark)
  • video: overscan: skips hidden upper scanlines (mainly for NTSC games)
  • video: underscan: draws black upper/lower borders (mainly for PAL games)
  • debug: memorizes old PC on emulation start (for undo "jump" via cursor left)
  • debug: input boxes recognize hi,lo,pc registers (eg. for ctrl+g, goto pc)
  • debug: option: allows to disable single, or multi-word disass pseudo opcodes
  • debug: added optional cdrom-command logging to TTY window (see other options)
  • setup: enabled automatic-save-options by default, removed fixed settings
  • a22i: rejects overflow-trap-flag (t) on logical commands (via mipass_logi_inj)
  • bios: fixed "extract_device_name" return value (for castlevania's "sim:")
  • bios: fixed "krom_2_offset" calculation: (msb-88h)*BCh+(lsb<7Fh)+lsb-9Fh
  • bios: added "patch_install_lightgun_irq_handler_inefficient" (dqm)
  • bios: added "patch_uninstall_early_card_irq_handler_inefficient" (raiden dx)
  • bios-font: 1st choice: use copy of font from psx-bios.rom (if present) (fast)
  • bios-font: 2nd choice: use formerly created no$psx.chr (if present) (fast)
  • bios-font: 3rd choice: create no$psx.chr from japanese 4Mbyte MS Gothic (slow)
  • bios-font: 4th choice: otherwise use non-japanese font from Courier New (fast)
  • bios-font: 5th choice: dummy rectangles (non-blanks required for castlevania)
  • selftest: shows CPU, GPU, and SPU emulation load (in iomap "timers" window)

  • 28 Dec 2012 no$psx v1.1 [download]
  • audio: bugfixed right-channel CD-XA stereo decompression (allows xa_mask.bit1)
  • audio: bugfixed left-channel CD-XA stereo decompression (pushes extra offhold)
  • gpu: changed initial texcoord fraction (for ff tactics, but isn't perfect yet)
  • cdrom: supports images with mixed sector sizes (in different tracks/areas)
  • cdrom: supports libcrypt subchannel data from .sbi, .m3s, .mdf
  • cdrom: supports .cdi (discjuggler) images, supports .ecm file decompression
  • cdrom: supports .mds/.mdf (alcohol) and .ccd/.img (clonecd) images
  • cleanup: removed "uh" warning on nonstandard/pocketstation memcard commands
  • cleanup: removed 'err80h' warning on uncommon/inaccurate seek_p cdrom command
  • bios: added "patch_optional_pad_output_inefficient_variant" (lemmings)
  • debug: bugfixed step-over via f3-key (on call/syscall aka jal/jalr/syscal)
  • debug: bugfixed native mips disassembler syntax (use dis_proc_native_retry)
  • setup: moved loadbios_firsttime after loadsetup (using Default BIOS option)
  • help: added subchannel-image chapter (.sbi, .m3s, .mdf, .sub, .cdi, .nrg)
  • help: added .cdi (discjuggler) cd format, and ecm (pseudo-compression) specs
  • help: added .mds/.mdf (alcohol) and .ccd/.img/.sub (clonecd) cd format specs
  • help: added libcrypt info (16bit key, sectors, crc, cop0regs, example, etc.)
  • help: added formerly unknown license strings (JP="Inc.",0Ah, US="Amer ica")
  • keyboard: removed ALT+X=exit hotkey during emulation (conflicted with joypad)
  • iomap: shows CD-audio playback mode (18900Hz/37800Hz/44100Hz, mono/stereo)
  • setup: allows to disable MMX (just for curiosity/testing purposes)

  • 03 Dec 2012 no$psx v1.0 [download] first release
    The Emulation should be complete with all hardware features fully implemented and working, though as by now it's tested with only a dozen of games, so there may be still some problems with other games (bug reports are welcome).
    The BIOS is emulated via a BIOS-clone, which is free and faster than the original PSX-BIOS. There may be still some compatibilty issues (especially as most PSX games are applying patches the to original BIOS; the BIOS clone is reproducing known patches, but may fail on unknown ones). In case of problems, it may be recommended to use a copy of the original BIOS (with filename PSX-BIOS.ROM in no$psx folder).
    CDROMs are supported via real CDROM drive, via complete disk images (in .NRG or .CUE+BIN format), via single-track images (.ISO files), or as raw executables (.EXE files).
    Requirements are 1-2GHz, which is maybe not so fast (other PSX emulators are said to be working at 200MHz). CPU emulation is currently done on the fly (I might get that faster by using pre-compiled code in future versions). Rendering is done by software (I could maybe improve speed by adding dual core processor support) (another way would be using hardware acceleration, but my experiences are that this stuff isn't too pixel accurate, if it's working at all).
    Debugging/Development functions include disassembler, debugger, breakpoints, assembler, I/O map viewer, VRAM viewer, polygon viewer, TTY console window, and complete PSX hardware specs.
    Updates are planned, I'd love to spend more months on the PSX. The problem is that I am almost totally broke, eventually I can get through December, but in January I might start needing to borrow money from my parents. That would help me temporarily, but, in long term, I don't want to become "the guy that gets paid by his parents for making emulators". So far, it would be a big relief if more people would click the donate button - money is scaring me, and I don't need much of it, but I could really need some support. If you like the program and can afford a donation: Please help!


    17 Feb 2008 no$psx project started
    The no$psx project was started in 2008. Alltogether it took around 12 or 15 months fulltime work until reaching a well working state. Thereafter, I felt pretty much brain-washed, and needed a long break, until finally getting around to adding final details for the first release in 2012.
    Credits big thanks to doomed for releasing all the TXT files with PSX specs back in late nineties.

    back to no$psx page