{"action":"opened","issue":{"url":"https://api.github.com/repos/freem/NeoShock/issues/3","labels_url":"https://api.github.com/repos/freem/NeoShock/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/freem/NeoShock/issues/3/comments","events_url":"https://api.github.com/repos/freem/NeoShock/issues/3/events","html_url":"https://github.com/freem/NeoShock/issues/3","id":62013483,"number":3,"title":"Allow Memory Card sizes greater than 2KiB","user":{"login":"freem","id":626035,"avatar_url":"https://avatars.githubusercontent.com/u/626035?v=3","gravatar_id":"","url":"https://api.github.com/users/freem","html_url":"https://github.com/freem","followers_url":"https://api.github.com/users/freem/followers","following_url":"https://api.github.com/users/freem/following{/other_user}","gists_url":"https://api.github.com/users/freem/gists{/gist_id}","starred_url":"https://api.github.com/users/freem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freem/subscriptions","organizations_url":"https://api.github.com/users/freem/orgs","repos_url":"https://api.github.com/users/freem/repos","events_url":"https://api.github.com/users/freem/events{/privacy}","received_events_url":"https://api.github.com/users/freem/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/freem/NeoShock/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/freem/NeoShock/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-03-16T08:51:11Z","updated_at":"2015-03-16T08:51:11Z","closed_at":null,"body":"According to the [NeoGeo dev wiki](https://wiki.neogeodev.org/index.php?title=Memory_card), the BIOS is able to handle these memory card sizes:\r\n* 2KiB\r\n* 4KiB\r\n* 6KiB\r\n* 8KiB\r\n* 10KiB\r\n* 12KiB (unlisted, but implied)\r\n* 14KiB\r\n* 16KiB\r\n\r\nCards can be one of four types:\r\n* 8 bit width\r\n* 16 bit width\r\n* 16 bit width (doubled)\r\n* SNK ROM\r\n\r\nThe 2KiB limit is hardcoded in a few places:\r\n\r\n# `src/mame/devices/ng_memcard.c/h`\r\n* `m_memcard_data` is an array of length `0x800`\r\n* `call_load`, `call_unload`, `call_create` all use hardcoded `0x800` values.\r\n\r\n# `src/mess/drivers/ng_aes.c`\r\n* The MEMCARD_SIZE define, while unused, is set to `0x800`. The CD systems have their own on-board memory (8KiB, or `0x2000`), which would not be the target of this change."}}