2025年10月11日 星期六

MVS MV1FZ 維修記錄 #8

MVS MV1FZ 維修記錄 #8

開始準備用CPLD來取代NEO-C1的損壞部份。已經有前人解析出NEO-C1內部完整邏輯了,以這個為出發點,稍微整理一下需要用CPLD實作有哪些。目前已知D12跟D13是有問題的,所以跟這部份有關聯的都需要。大致上就是68k <-> z80溝通用的register,IN00~IN27,SD0~SD7,還有跟register讀寫有關的位址線和控制訊號。不過因為要用的CPLD是XC9572XL-VQ64,IO有52個,但實際需要的IO有53個,得需要思考一下有哪些IO是可以省略的。

看了一下MV1FZ的schematic,看起來IO24~IO27其實是直接連到VCC的,所以其實可以不需要這4個IO,直接在verilog裡面實作這部份就好。這樣子IO數就夠了,verilog的部份也很快速地實作完。再來就是得想一下要怎麼把CPLD接到板子上測試,畢竟有可能實作會有bug,用一般的轉板有點太大而且還需要給XC9572XL的+3.3V電源,還是自己設計一個小小轉板好了:

很簡單的轉板,把所有的IO都拉出來到test pad上方便焊線,左下角則是+3.3V LDO,中間一排則是燒錄用的JTAG。

再來就是等送pcb廠了,不過得等手邊其它案子的pcb完成之後跟著一起生產,得先放置一陣子了。

2025年9月30日 星期二

MVS MV1FZ 維修記錄 #7

MVS MV1FZ 維修記錄 #7 

已經確定D12是有問題之後,又再一次檢查,其實D13也是一樣跟VCC電阻只有數百歐母。先懷疑的是NEO-C1,看了一下pinout,還好在IC邊邊還算好處理,努力用鑷子跟烙鐵把D12跟D13解焊然後在pad上簡單貼個膠帶絕緣:


就這樣直接上電測試了,開機沒問題準備重測BRAM跟WRAM:

就正常了😃,放了一整晚跑測試也沒問題👐。所以真的確定NEO-C1是問題原因,不過要找到替代品有點困難。但網路上已有人解析出完整的邏輯,也許可以用個CPLD把損壞的部份替代掉?這邊還要再研究一下。

2025年9月27日 星期六

Parallels Desktop加入其它實體硬碟

最近電腦因為更新Tahoe結果失敗導致得用Apple Configurator重置整台電腦,花了一周重新弄好環境跟回復備份,Bootcamp裝好後又回到以前遇到的難題:讓PD加入其它實體硬碟。其實已經有前人研究好方法了,自己以前也是用這個方法成功過,但是這次因為重新分割硬碟所以又得重做一次,又遇到很多問題。好不容易在許多try & error之後成功了,這邊記錄一下:
 
1. 外接NVME磁碟不行。這邊的"外接",意思是NVME SSD是裝在PCI-E轉卡上的,但OS顯示它是external。本來是想讓Windows的資料碟放在這個NVME上面的,然後VM啟動就把它掛到VM底下當成實體硬碟。但問題是PD雖然有抓到,但是不管怎樣啟動VM時就是會顯示無法找到該磁碟。猜測是PD根本就不支援"external"硬碟,因為以前也有試過把Windows裝在該NVME上面,但PD搜尋Bootcamp分區時都不會顯示那個磁碟...。也許有其它的PCI-E介面卡可以讓OS辨識為internal? 這邊不太確定。
 
2. 已經知道external NVME不行了,那還是用回SATA磁碟。這邊按照前人的步驟弄好,config.pvs內的設定還有幾個地方要注意:
  • <Size>的值是硬碟容量,單位是MBytes,可用diskutil info <drive>中的Disk Size (xxx bytes)除以1048576取整數部份就好。
  • <DiskVersion>需設定為2 (重要!!),範例裡是填0,也許PD14可以,但PD19不行。這邊還好還有留以前舊硬碟的設定,比對一下跟著改成2,啟動時就不會一直顯示分割區有錯。
  • <CompatLevel>設定level2 (跟DiskDescriptor.xml裡一樣)
  • 最重要的,在VM設定加入硬碟後,記得要在啟動順序裡「取消」新加入硬碟的啟動,因為這個卡關了一小時,因為PD怎麼樣都不會把磁碟掛到VM上。
成功加入硬碟的話,會看到設定裡可以按選擇分區:(External NVME的話不會顯示這個按鈕)
 
 
到這邊啟動VM,PD應該就能自動unmount加入的磁碟,然後掛到VM上面去。研究了兩天總算回到以前熟悉的環境👐。

2025年9月24日 星期三

MVS MV1FZ 維修記錄 #6

MVS MV1FZ 維修記錄 #6

把1SS352換成BAT760後, BRAM總算能夠正常開始測試了。不過放著讓它跑大概30分鐘左右就又跑出錯誤:

懷疑也許還是電源有問題,快速用三用電表量了一下也有4.8V,應該不至於電壓不足。把跟BRAM有關的電解電容換掉也還是一樣。沒頭緒下,先測試WRAM的部份好了,結果一樣一開始沒問題,但放久之後會錯誤: 

看了一下錯誤的內容,怎麼覺得有點類似。都是EXPECTED 8080但是ACTUAL 9080,都是D12有問題。這樣問題有可能不是在BRAM或WRAM上,而是其它也有使用68K data bus的元件上。

簡單用三用電表確認一下D12跟VCC之間的電阻:

 

304歐母,似乎有點太低。再量一下其它data bus信號跟VCC的電阻值:

 

29.05M,這看起來比較正常,到這邊幾乎可以確定D12信號是有問題的,只不過犯人是誰...。第一個當然先懷疑是已經確定有問題的NEO-C1了,而且NEO-C1也有用到data bus中D8-D15。不過要怎麼確定有點麻煩,也許先想辦法把NEO-C1接到D12的接腳先解焊試看看?

2025年9月23日 星期二

MVS MV1FZ 維修記錄 #5


MVS MV1FZ 維修記錄 #5

準備要詳細測試細部功能,基本目標是每個部份都能跑一小時都沒問題之後,再讓每個部份能跑過一整晚。 

馬上就檢查出BRAM錯誤,首先用三用電表看一下BRAM電壓:

BRAM VCC=4.3V,看一下BRAM(CXK58257AM)的datasheet

 

要求的最小工作電壓是4.5V,看來BRAM測試不過的原因應該就是它了。翻到PCB背面看一下BRAM電源是怎麼產生的:

 

把原本蓋在上面的塑膠片跟泡棉移除後稍微看一下,電池的供電從D4過來,然後+5V經由D3。一般運作時就只跟D3有關。看一下1SS352的datasheet:

VF居然至少有0.62V,這樣子BRAM VCC最多也只會有5 - 0.62 = 4.38V,跟三用電表測出來的值差不多。

解決方法一個是把BRAM換掉,改用工作電壓範圍比較寬鬆的IC。另一個是換掉D3改用VF較低的二極體。手邊剛好有多的BAT760:

 

電流100mA時,VF只有0.3V左右,這樣子BRAM VCC也有4.7V,就決定先這樣修改了。 

2025年9月15日 星期一

MVS MV1FZ 維修記錄 #4

MVS MV1FZ 維修記錄 #4

又花了一點時間看一下neogeo-diag-bios的程式,打算讓它跑完測試後直接進入按鈕測試。幸好它的架構簡單明確而且程式都有分好功能,一下子就修改好了:

 

還未接上任何搖桿,畫面上就看得出來P1D鈕一直卡在按下狀態,P2則是上下左右都按下狀態。接上搖桿測試後P1只有上下左右和A鈕還有START跟SELECT正常,P2則是完全失效。但是從示波器是可以看到進入NEO-C1的狀態是正常的,看來NEO-C1真的有問題。

不過還是想嘗試其它的測試,想把可能有問題的部份都找出來。但是只有A鈕有反應一定過不了測試完的畫面,只能再改程式讓它不要判定ABCD同時按了。好在這部份也蠻好改的,花了一點點時間就修改完畢,連帶其它測試畫面會需要用到ABCD鈕的部份也都改成對應到上下左右,免得之後測試麻煩。


 改完收工,詳細測試等之後再說吧。

2025年9月14日 星期日

MVS MV1FZ 維修記錄 #3

MVS MV1FZ 維修記錄 #3

準備來修改neogeo-diag-bios,至少能讓它做完基本68K相關測試。

自已是mac環境,按照說明準備好vasm跟vlink相關的編譯跟設定後,準備編譯neogeo-diag-bios。但在make時候會出現以下錯誤💥:

gen-crc-mirror.c:57:9: error: call to undeclared function 'htobe32'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   57 |   crc = htobe32(crc);
      |         ^
1 error generated.

這是因為macos缺少htobe32的定義,網路上可以找到很多解決方法。加入定義後就可以正常建出sp1.bin和m1.bin了👍。

稍微看一下sp1.asm瞭解一下架構後,嘗試小修改,再燒錄到EPROM上之後測試:

 


總算看到正常的結果💪,版本顯示a99是我自己改的,方便確認是自己修改的版本。但是按ABCD仍然無法進入MAIN MENU,看來按鈕輸入部份真的有問題了💦。

接下來要再詳細看一下程式看是否能在初步測試完成後進到MAIN MENU中,因為按鍵測試要從那邊才能進入啊😵。