8000 GitHub - ivop/pokey-explorer: Exploring the Atari 8-bit Pokey chip
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

ivop/pokey-explorer

{"props":{"initialPayload":{"allShortcutsEnabled":false,"path":"/","repo":{"id":296922032,"defaultBranch":"master","name":"pokey-explorer","ownerLogin":"ivop","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-09-19T17:49:08.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/72343?v=4","public":true,"private":false,"isOrgOwned":false},"currentUser":null,"refInfo":{"name":"master","listCacheKey":"v0:1600537916.0","canEdit":false,"refType":"branch","currentOid":"61b47f183931d9caec4f26b815739aba69c1f6af"},"tree":{"items":[{"name":"releases/v1.1","path":"releases/v1.1","contentType":"directory","hasSimplifiedPath":true},{"name":"sweeps","path":"sweeps","contentType":"directory"},{"name":"util","path":"util","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"build.sh","path":"build.sh","contentType":"file"},{"name":"cio.s","path":"cio.s","contentType":"file"},{"name":"clean.sh","path":"clean.sh","contentType":"file"},{"name":"default-screen.png","path":"default-screen.png","contentType":"file"},{"name":"font.fnt","path":"font.fnt","contentType":"file"},{"name":"pokeyexp-batch-ntsc.xex","path":"pokeyexp-batch-ntsc.xex","contentType":"file"},{"name":"pokeyexp-batch-pal.xex","path":"pokeyexp-batch-pal.xex","contentType":"file"},{"name":"pokeyexp-ntsc.xex","path":"pokeyexp-ntsc.xex","contentType":"file"},{"name":"pokeyexp-pal.xex","path":"pokeyexp-pal.xex","contentType":"file"},{"name":"pokeyexp.s","path":"pokeyexp.s","contentType":"file"},{"name":"scancodes.h","path":"scancodes.h","contentType":"file"},{"name":"scancodes.s","path":"scancodes.s","contentType":"file"},{"name":"sweeps.s","path":"sweeps.s","contentType":"file"},{"name":"tuning-16bit-ntsc.s","path":"tuning-16bit-ntsc.s","contentType":"file"},{"name":"tuning-16bit-pal.s","path":"tuning-16bit-pal.s","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":null,"totalCount":21,"showBranchInfobar":false},"fileTree":null,"fileTreeProcessingTime":null,"foldersToFetch":[],"treeExpanded":false,"symbolsExpanded":false,"isOverview":true,"overview":{"banners":{"shouldRecommendReadme":false,"isPersonalRepo":false,"showUseActionBanner":false,"actionSlug":null,"actionId":null,"showProtectBranchBanner":false,"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_repo","releasePath":"/ivop/pokey-explorer/releases/new?marketplace=true","showPublishActionBanner":false},"interactionLimitBanner":null,"showInvitationBanner":false,"inviterName":null,"actionsMigrationBannerInfo":{"releaseTags":[],"showImmutableActionsMigrationBanner":false,"initialMigrationStatus":null}},"codeButton":{"contactPath":"/contact","isEnterprise":false,"local":{"protocolInfo":{"httpAvailable":true,"sshAvailable":null,"httpUrl":"https://github.com/ivop/pokey-explorer.git","showCloneWarning":null,"sshUrl":null,"sshCertificatesRequired":null,"sshCertificatesAvailable":null,"ghCliUrl":"gh repo clone ivop/pokey-explorer","defaultProtocol":"http","newSshKeyUrl":"/settings/ssh/new","setProtocolPath":"/users/set_protocol"},"platformInfo":{"cloneUrl":"https://desktop.github.com","showVisualStudioCloneButton":false,"visualStudioCloneUrl":"https://windows.github.com","showXcodeCloneButton":false,"xcodeCloneUrl":"xcode://clone?repo=https%3A%2F%2Fgithub.com%2Fivop%2Fpokey-explorer","zipballUrl":"/ivop/pokey-explorer/archive/refs/heads/master.zip"}},"newCodespacePath":"/codespaces/new?hide_repo_select=true\u0026repo=296922032"},"popovers":{"rename":null,"renamedParentRepo":null},"commitCount":"222","overviewFiles":[{"displayName":"README.md","repoName":"pokey-explorer","refName":"master","path":"README.md","preferredFileType":"readme","tabName":"README","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ePOKEY EXPLORER\u003c/h1\u003e\u003ca id=\"user-content-pokey-explorer\" class=\"anchor\" aria-label=\"Permalink: POKEY EXPLORER\" href=\"#pokey-explorer\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003ePokey Explorer is a tool to explore all possible register combinations of the Atari 8-bit Pokey chip.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/ivop/pokey-explorer/blob/master/default-screen.png\"\u003e\u003cimg src=\"/ivop/pokey-explorer/raw/master/default-screen.png\" alt=\"Default Screen\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eTL;DR All INVERSE video characters are keys you can press. Some with SHIFT to go a little faster. By pressing START, you start a sweep determined by the sweep settings.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAll values are hexadecimal. Basic understanding of how Pokey works is assumed.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSOME SORT OF MANUAL\u003c/h2\u003e\u003ca id=\"user-content-some-sort-of-manual\" class=\"anchor\" aria-label=\"Permalink: SOME SORT OF MANUAL\" href=\"#some-sort-of-manual\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThere are four rectangles that contain the current values of all AUDF and AUDC registers. The channel number is on top. AUDF is on the left side. AUDC is on the right side.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eBelow are two lines with INVERSE video characters that indicate which keys you can press to influence the values. The upper line keys increase the value by one, and the lower line keys decrease the value by one. If you hold shift, you can increase or decrease the specific value by $10 (16).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eTo the right of the four rectangles are two hexadecimal values. The first is AUDCTL. The second is SKCTL. Both can be influenced by a lot of keys that are described below.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eF\u003c/strong\u003e and \u003cstrong\u003eG\u003c/strong\u003e toggle the filter bits.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eJ\u003c/strong\u003e and \u003cstrong\u003eK\u003c/strong\u003e toggle the join channels bits.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eP\u003c/strong\u003e toggles the poly counter between 17-bit and 9-bit.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eC\u003c/strong\u003e toggles the base clock frequency between 15kHz and 64kHz.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eA\u003c/strong\u003e and \u003cstrong\u003eD\u003c/strong\u003e toggle the clock for channel 1 and 3 respectively, between the base clock and 1.79MHz.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eM\u003c/strong\u003e enables/disables two-tone mode. The only key that influences SKCTL.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003ePressing \u003cstrong\u003e-\u003c/strong\u003e (minus) or \u003cstrong\u003e[\u003c/strong\u003e resets the poly counter by storing a non-zero value to STIMER.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAutomated Sweeps\u003c/h2\u003e\u003ca id=\"user-content-automated-sweeps\" class=\"anchor\" aria-label=\"Permalink: Automated Sweeps\" href=\"#automated-sweeps\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBy pressing \u003cstrong\u003eSTART\u003c/strong\u003e, you can start an automated sweep of either an 8-bit value or a 16-bit value. The settings are described below.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-R\u003c/strong\u003e Selects the resolution. 8-bit, 16-bit or reverse 16-bit, where the LSB and MSB are swapped.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-C\u003c/strong\u003e Selects the channels that are sweeped. Depending on the resolution, it's either 1, 2, 3, 4, or relevant 16-bit pairs, which are 1+2, 3+4, 1+3 and 2+4.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-S\u003c/strong\u003e and \u003cstrong\u003eCTRL-D\u003c/strong\u003e Increase and decrease the start value of the sweep. See CTRL-U.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-W\u003c/strong\u003e and \u003cstrong\u003eCTRL-E\u003c/strong\u003e Increase and decrease the end value of the sweep. See CTRL-U.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-I\u003c/strong\u003e and \u003cstrong\u003eCTRL-O\u003c/strong\u003e Increase and decrease the interval, i.e. step size during the sweep. See CTRL-U.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-P\u003c/strong\u003e Selects how long the tone is heard. 0.1s, 1s, 2s or 4s. Play time.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-G\u003c/strong\u003e Selects the length of the silent pause between each tone. 0s, 0.1s, 0.5s or 1s. Gap time.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-X\u003c/strong\u003e Selects whether the poly counter is reset by writing a non-zero value to STIMER. Can be off, once (at the start of the sweep), or each (each new tone).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-U\u003c/strong\u003e Selects the step size for increasing and decreasing sweep values. This can greatly reduce the time to reach a value like $7654. Step size can be $0001, $0010, $0100 or $1000. The last two have no effect on the interval if the sweep resolution is 8-bit.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSweeps can be recorded on real hardware or with an emulator. If the play time is at least 1 second at 44.1kHz, one can automate frequency detection, for example with aubiopitch of the \u003ca href=\"https://aubio.org/\" rel=\"nofollow\"\u003eaubio\u003c/a\u003e project. If you compile from source, be sure to configure with --enable-fftw3, otherwise you won't be able to use buffer/hop sizes that are not a multiple of 2. And you need 44100, and 48510, and whatever you want.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eTuning Notes\u003c/h2\u003e\u003ca id=\"user-content-tuning-notes\" class=\"anchor\" aria-label=\"Permalink: Tuning Notes\" href=\"#tuning-notes\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf a second pokey is detected, it is possible to generate a 16-bit equal tempered tuning note to which you can tune by ear.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-T\u003c/strong\u003e toggle tuning note on/off\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eCTRL-V\u003c/strong\u003e and \u003cstrong\u003eCTRL-B\u003c/strong\u003e increase or decrease the volume of the tuning note\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003e,\u003c/strong\u003e and \u003cstrong\u003e.\u003c/strong\u003e cycle through 12 notes and 10 octaves respectively\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThat's C0-B9.\u003c/p\u003e\n\u003c/article\u003e","loaded":true,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"POKEY EXPLORER","anchor":"pokey-explorer","htmlText":"POKEY EXPLORER"},{"level":2,"text":"SOME SORT OF MANUAL","anchor":"some-sort-of-manual","htmlText":"SOME SORT OF MANUAL"},{"level":2,"text":"Automated Sweeps","anchor":"automated-sweeps","htmlText":"Automated Sweeps"},{"level":2,"text":"Tuning Notes","anchor":"tuning-notes","htmlText":"Tuning Notes"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fivop%2Fpokey-explorer"}},{"displayName":"LICENSE","repoName":"pokey-explorer","refName":"master","path":"LICENSE","preferredFileType":"license","tabName":"License","richText":null,"loaded":false,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":null,"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fivop%2Fpokey-explorer"}}],"overviewFilesProcessingTime":0}},"appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-708ec8ade250.js","githubDevUrl":null,"enabled_features":{"copilot_workspace":null,"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true,"github_models_repo_integration":false}}}}

Repository files navigation

POKEY EXPLORER

Pokey Explorer is a tool to explore all possible register combinations of the Atari 8-bit Pokey chip.

Default Screen

TL;DR All INVERSE video characters are keys you can press. Some with SHIFT to go a little faster. By pressing START, you start a sweep determined by the sweep settings.

All values are hexadecimal. Basic understanding of how Pokey works is assumed.

SOME SORT OF MANUAL

There are four rectangles that contain the current values of all AUDF and AUDC registers. The channel number is on top. AUDF is on the left side. AUDC is on the right side.

Below are two lines with INVERSE video characters that indicate which keys you can press to influence the values. The upper line keys increase the value by one, and the lower line keys decrease the value by one. If you hold shift, you can increase or decrease the specific value by $10 (16).

To the right of the four rectangles are two hexadecimal values. The first is AUDCTL. The second is SKCTL. Both can be influenced by a lot of keys that are described below.

F and G toggle the filter bits.

J and K toggle the join channels bits.

P toggles the poly counter between 17-bit and 9-bit.

C toggles the base clock frequency between 15kHz and 64kHz.

A and D toggle the clock for channel 1 and 3 respectively, between the base clock and 1.79MHz.

M enables/disables two-tone mode. The only key that influences SKCTL.

Pressing - (minus) or [ resets the poly counter by storing a non-zero value to STIMER.

Automated Sweeps

By pressing START, you can start an automated sweep of either an 8-bit value or a 16-bit value. The settings are described below.

CTRL-R Selects the resolution. 8-bit, 16-bit or reverse 16-bit, where the LSB and MSB are swapped.

CTRL-C Selects the channels that are sweeped. Depending on the resolution, it's either 1, 2, 3, 4, or relevant 16-bit pairs, which are 1+2, 3+4, 1+3 and 2+4.

CTRL-S and CTRL-D Increase and decrease the start value of the sw 63A4 eep. See CTRL-U.

CTRL-W and CTRL-E Increase and decrease the end value of the sweep. See CTRL-U.

CTRL-I and CTRL-O Increase and decrease the interval, i.e. step size during the sweep. See CTRL-U.

CTRL-P Selects how long the tone is heard. 0.1s, 1s, 2s or 4s. Play time.

CTRL-G Selects the length of the silent pause between each tone. 0s, 0.1s, 0.5s or 1s. Gap time.

CTRL-X Selects whether the poly counter is reset by writing a non-zero value to STIMER. Can be off, once (at the start of the sweep), or each (each new tone).

CTRL-U Selects the step size for increasing and decreasing sweep values. This can greatly reduce the time to reach a value like $7654. Step size can be $0001, $0010, $0100 or $1000. The last two have no effect on the interval if the sweep resolution is 8-bit.

Sweeps can be recorded on real hardware or with an emulator. If the play time is at least 1 second at 44.1kHz, one can automate frequency detection, for example with aubiopitch of the aubio project. If you compile from source, be sure to configure with --enable-fftw3, otherwise you won't be able to use buffer/hop sizes that are not a multiple of 2. And you need 44100, and 48510, and whatever you want.

Tuning Notes

If a second pokey is detected, it is possible to generate a 16-bit equal tempered tuning note to which you can tune by ear.

CTRL-T toggle tuning note on/off

CTRL-V and CTRL-B increase or decrease the volume of the tuning note

, and . cycle through 12 notes and 10 octaves respectively

That's C0-B9.

About

Exploring the Atari 8-bit Pokey chip

Resources

License

Stars

Watchers

Forks

Packages

No packages published
0