Initial commit

This commit is contained in:
2025-09-14 19:55:43 +02:00
commit 7b5ecda692
17 changed files with 361 additions and 0 deletions

1
docs/.obsidian/app.json vendored Normal file
View File

@@ -0,0 +1 @@
{}

3
docs/.obsidian/appearance.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"theme": "obsidian"
}

33
docs/.obsidian/core-plugins.json vendored Normal file
View File

@@ -0,0 +1,33 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"canvas": true,
"outgoing-link": true,
"tag-pane": true,
"footnotes": false,
"properties": false,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"bookmarks": true,
"markdown-importer": false,
"zk-prefixer": false,
"random-note": false,
"outline": true,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": true,
"bases": true,
"webviewer": false
}

22
docs/.obsidian/graph.json vendored Normal file
View File

@@ -0,0 +1,22 @@
{
"collapse-filter": true,
"search": "",
"showTags": false,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": true,
"colorGroups": [],
"collapse-display": true,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1,
"close": true
}

186
docs/.obsidian/workspace.json vendored Normal file
View File

@@ -0,0 +1,186 @@
{
"main": {
"id": "b1126f19eadfbccd",
"type": "split",
"children": [
{
"id": "26583ad05e41a8d5",
"type": "tabs",
"children": [
{
"id": "be20a2e02f2b6437",
"type": "leaf",
"state": {
"type": "empty",
"state": {},
"icon": "lucide-file",
"title": "New tab"
}
}
]
}
],
"direction": "vertical"
},
"left": {
"id": "41928e7bfa033c12",
"type": "split",
"children": [
{
"id": "20b81aa7e9da9056",
"type": "tabs",
"children": [
{
"id": "c9cf1762af2fc6d1",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "41e707cc40e380be",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "7efd4428cb796566",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
]
}
],
"direction": "horizontal",
"width": 300
},
"right": {
"id": "564b72f12544e8fb",
"type": "split",
"children": [
{
"id": "27b51e3cbd5b64f2",
"type": "tabs",
"children": [
{
"id": "08ff37c167cba8a6",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "Welcome.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks for Welcome"
}
},
{
"id": "f0d6e734ee929213",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "Welcome.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links from Welcome"
}
},
{
"id": "58c9a6253aa57492",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "2feb030bc67ed9a4",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "Welcome.md",
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline of Welcome"
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"bases:Create new base": false
}
},
"active": "c9cf1762af2fc6d1",
"lastOpenFiles": [
"GameCube/SP1.md",
"GameCube/Sp1 physical connector.canvas",
"media/SP1-picture-with-pin-numbers.jpg",
"media/Unconfirmed 13874.crdownload",
"media",
"Environment/Amaranth-Hdl project setup.md",
"ReBbarb.md",
"GameCube/EXI protocol.md",
"GameCube/GameCube.md",
"GameCube",
"Investigations/external clocks.md",
"Investigations.md",
"Investigations",
"Environment",
"Untitled.base"
]
}

View File

@@ -0,0 +1,10 @@
Create a venv
`python -m venv .venv`
Activate the venv
`. .vent/bin/activate`
Install the dependencies
`pip install -r requirements.txt`
You will potentially need more tooling to create the bitstream and flash the bitstream for the specific FPGA. In my case I'm working with an IceBreaker. So I've installed the `nextpnr-ice40` toolchain. Yosys is builtin to amaranth, that is why I'm running it within an venv to ensure it doesn't mess with system installed packages.

View File

View File

1
docs/GameCube/SP1.md Normal file
View File

@@ -0,0 +1 @@
Is a serial port located underneath the gamecube, used for the Modem and BroadBandAdapter. it uses the following pinout.

View File

@@ -0,0 +1,9 @@
{
"nodes":[
{"id":"9baad18d22c3c798","type":"file","file":"media/SP1-picture-with-pin-numbers.jpg","x":-260,"y":-220,"width":359,"height":400},
{"id":"71e43c20f72fa2ad","type":"text","text":"https://www.gc-forever.com/yagcd/chap2.html#sec2.4.1.4\n2.4.1.4 BBA/Modem Connector (P6) \npin\tSignal\n1\tEXTIN\n2\tGround (Shield)\n3\tINT\n4\tCLK\n5\t12V\n6\tDO\n7\t3.3V\n8\t3.3V\n9\tDI\n10\tCS\n11\tGround\n12\tGround\n","x":180,"y":-250,"width":224,"height":460}
],
"edges":[
{"id":"d1b694360b443139","fromNode":"71e43c20f72fa2ad","fromSide":"left","toNode":"9baad18d22c3c798","toSide":"right"}
]
}

View File

24
docs/ReBbarb.md Normal file
View File

@@ -0,0 +1,24 @@
This project attempts to emulate the Gamecube BroadBand Adapter in an FPGA. The following things need to happen.
- [x] [[Amaranth-Hdl project setup]]
- [x] Setup venv
- [x] Install packages
- [x] Flash Blinky on icebreaker
- [ ] Figuring out how to deal with [[external clocks]].
- [x] How to get a clock greater than 12Mhz needed to interface with 32Mhz EXI
- [x] PLL configured to 48Mhz
- [ ] ~~48Mhz oscillator onboard? ~~
- [ ] Check if Clock Domain Crossing is possible.
- [ ] Oversampeling approach was tedious but worked
- [ ] Interfacing with [[GameCube]]
- [ ] Figuring pinout of SP1.
- [ ] Unofficial gamecube docs?
- [ ] Make sure connecting [[SP1]] to IceBreaker is safe.
- [ ] Can we power the FPGA with the SP1?
- [ ] How much voltage do we get from SP1.
- [ ] How much current can we source?
- [ ] Figuring out basic [[EXI protocol]]
- [ ] What is the structure of the messages?
- [ ] How to know how long the message is
- [ ] Integrity checks?
- [ ] How fast do we need to respond to a message.

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB