Skip to content

Instantly share code, notes, and snippets.

@cr1901
Last active March 15, 2019 13:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cr1901/0db9b8a933365fbdeb01cd260340f98c to your computer and use it in GitHub Desktop.
Save cr1901/0db9b8a933365fbdeb01cd260340f98c to your computer and use it in GitHub Desktop.
VRC7 Comparse
Patch #1: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[3, 0], dr=[0, 0], sl=[0, 0], rr=[0, 0])
Patch #2: OPLLPatch(tl=1, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 2], dr=[0, 0], sl=[0, 0], rr=[0, 0])
Patch #3: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[-1, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 2], dr=[0, -8], sl=[0, 1], rr=[-2, 0])
Patch #4: OPLLPatch(tl=-12, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[3, 0], dr=[0, 0], sl=[3, 0], rr=[1, 0])
Patch #5: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[1, 0], multi=[0, 0], ksl=[0, 0], ar=[-1, 0], dr=[1, 0], sl=[0, 0], rr=[-7, 0])
Patch #6: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[-5, -1], dr=[3, 0], sl=[15, 0], rr=[1, -1])
Patch #7: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 0], dr=[0, 0], sl=[0, 0], rr=[-5, 0])
Patch #8: OPLLPatch(tl=8, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[-2, 0], dr=[-13, 0], sl=[-2, 0], rr=[-4, 0])
Patch #9: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[1, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 0], dr=[-15, 2], sl=[7, -1], rr=[2, 0])
Patch #10: OPLLPatch(tl=-3, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[1, 0], ksr=[1, 0], multi=[0, 0], ksl=[0, 0], ar=[1, 0], dr=[-1, 3], sl=[1, 0], rr=[1, 0])
Patch #11: OPLLPatch(tl=-5, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[1, 0], multi=[0, 0], ksl=[-1, 0], ar=[0, 0], dr=[5, 3], sl=[-8, 0], rr=[-5, 0])
Patch #12: OPLLPatch(tl=4, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 0], dr=[-2, -1], sl=[-1, 0], rr=[5, 0])
Patch #13: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[2, 0], dr=[6, 3], sl=[-15, -5], rr=[-4, 0])
Patch #14: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 2], dr=[0, -15], sl=[0, 15], rr=[-1, 0])
Patch #15: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 3], dr=[0, 5], sl=[0, -1], rr=[2, 0])
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"from collections import namedtuple\n",
"\n",
"OPLLPatch = namedtuple(\"OPLLPatch\", [\"tl\", \"dc\", \"dm\", \"fb\", \"am\", \"vib\", \"et\", \"ksr\", \"multi\", \"ksl\", \"ar\", \"dr\", \"sl\", \"rr\"])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"VRC7 = [\n",
" OPLLPatch(0x05, 0x00, 0x00, 0x06,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x01 ],[ 0x00, 0x00 ],[ 0x03, 0x01 ],[ 0x00, 0x00 ],[ 0x0e, 0x08 ],[ 0x08, 0x01 ],[ 0x04, 0x02 ],[ 0x02, 0x07 ]),\n",
" OPLLPatch(0x14, 0x00, 0x01, 0x05,[ 0x00, 0x00 ],[ 0x00, 0x01 ],[ 0x00, 0x00 ],[ 0x01, 0x00 ],[ 0x03, 0x01 ],[ 0x00, 0x00 ],[ 0x0d, 0x0f ],[ 0x08, 0x06 ],[ 0x02, 0x01 ],[ 0x03, 0x02 ]),\n",
" OPLLPatch(0x08, 0x00, 0x01, 0x00,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x01, 0x01 ],[ 0x01, 0x01 ],[ 0x00, 0x00 ],[ 0x0f, 0x0b ],[ 0x0a, 0x02 ],[ 0x02, 0x01 ],[ 0x00, 0x02 ]),\n",
" OPLLPatch(0x0c, 0x00, 0x00, 0x07,[ 0x00, 0x00 ],[ 0x00, 0x01 ],[ 0x01, 0x01 ],[ 0x01, 0x00 ],[ 0x01, 0x01 ],[ 0x00, 0x00 ],[ 0x0a, 0x06 ],[ 0x08, 0x04 ],[ 0x06, 0x02 ],[ 0x01, 0x07 ]),\n",
" OPLLPatch(0x1e, 0x00, 0x00, 0x06,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x01, 0x01 ],[ 0x01, 0x00 ],[ 0x02, 0x01 ],[ 0x00, 0x00 ],[ 0x0e, 0x07 ],[ 0x01, 0x06 ],[ 0x00, 0x02 ],[ 0x01, 0x08 ]),\n",
" OPLLPatch(0x06, 0x00, 0x00, 0x00,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x02, 0x01 ],[ 0x00, 0x00 ],[ 0x0a, 0x0e ],[ 0x03, 0x02 ],[ 0x0f, 0x0f ],[ 0x04, 0x04 ]),\n",
" OPLLPatch(0x1d, 0x00, 0x00, 0x07,[ 0x00, 0x00 ],[ 0x00, 0x01 ],[ 0x01, 0x01 ],[ 0x00, 0x00 ],[ 0x01, 0x01 ],[ 0x00, 0x00 ],[ 0x08, 0x08 ],[ 0x02, 0x01 ],[ 0x01, 0x00 ],[ 0x01, 0x07 ]),\n",
" OPLLPatch(0x22, 0x01, 0x00, 0x07,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x01, 0x01 ],[ 0x00, 0x00 ],[ 0x03, 0x01 ],[ 0x00, 0x00 ],[ 0x0a, 0x07 ],[ 0x02, 0x02 ],[ 0x00, 0x01 ],[ 0x01, 0x07 ]),\n",
" OPLLPatch(0x25, 0x00, 0x00, 0x00,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x01, 0x00 ],[ 0x01, 0x01 ],[ 0x05, 0x01 ],[ 0x00, 0x00 ],[ 0x04, 0x07 ],[ 0x00, 0x03 ],[ 0x07, 0x00 ],[ 0x02, 0x01 ]),\n",
" OPLLPatch(0x0f, 0x00, 0x01, 0x07,[ 0x01, 0x00 ],[ 0x00, 0x00 ],[ 0x01, 0x00 ],[ 0x01, 0x00 ],[ 0x05, 0x01 ],[ 0x00, 0x00 ],[ 0x0a, 0x0a ],[ 0x08, 0x05 ],[ 0x05, 0x00 ],[ 0x01, 0x02 ]),\n",
" OPLLPatch(0x24, 0x00, 0x00, 0x07,[ 0x00, 0x01 ],[ 0x00, 0x01 ],[ 0x00, 0x00 ],[ 0x01, 0x00 ],[ 0x07, 0x01 ],[ 0x00, 0x00 ],[ 0x0f, 0x0f ],[ 0x08, 0x08 ],[ 0x02, 0x01 ],[ 0x02, 0x02 ]),\n",
" OPLLPatch(0x11, 0x00, 0x00, 0x06,[ 0x00, 0x00 ],[ 0x01, 0x00 ],[ 0x01, 0x01 ],[ 0x01, 0x00 ],[ 0x01, 0x03 ],[ 0x00, 0x00 ],[ 0x06, 0x07 ],[ 0x05, 0x04 ],[ 0x01, 0x01 ],[ 0x08, 0x06 ]),\n",
" OPLLPatch(0x13, 0x00, 0x00, 0x05,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x01, 0x02 ],[ 0x03, 0x00 ],[ 0x0c, 0x09 ],[ 0x09, 0x05 ],[ 0x00, 0x00 ],[ 0x03, 0x02 ]),\n",
" OPLLPatch(0x0c, 0x00, 0x00, 0x00,[ 0x00, 0x00 ],[ 0x01, 0x01 ],[ 0x01, 0x01 ],[ 0x00, 0x00 ],[ 0x01, 0x03 ],[ 0x00, 0x00 ],[ 0x09, 0x0c ],[ 0x04, 0x00 ],[ 0x03, 0x0f ],[ 0x03, 0x06 ]),\n",
" OPLLPatch(0x0d, 0x00, 0x00, 0x00,[ 0x00, 0x00 ],[ 0x00, 0x01 ],[ 0x01, 0x01 ],[ 0x00, 0x01 ],[ 0x01, 0x02 ],[ 0x00, 0x00 ],[ 0x0c, 0x0d ],[ 0x01, 0x05 ],[ 0x05, 0x00 ],[ 0x06, 0x06 ]),\n",
" # TODO\n",
" OPLLPatch( 0x00, 0x00, 0x00, 0x00,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ]),\n",
" OPLLPatch( 0x00, 0x00, 0x00, 0x00,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ]),\n",
" OPLLPatch( 0x00, 0x00, 0x00, 0x00,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ]),\n",
" OPLLPatch( 0x00, 0x00, 0x00, 0x00,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ]),\n",
" OPLLPatch( 0x00, 0x00, 0x00, 0x00,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ]),\n",
" OPLLPatch( 0x00, 0x00, 0x00, 0x00,[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ],[ 0x00, 0x00 ])\n",
" ]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"kevtris = [\n",
" [0x03, 0x21, 0x05, 0x06, 0xB8, 0x81, 0x42, 0x27],\n",
" [0x13, 0x41, 0x13, 0x0D, 0xD8, 0xD6, 0x23, 0x12],\n",
" [0x31, 0x11, 0x08, 0x08, 0xFA, 0x9A, 0x22, 0x02],\n",
" [0x31, 0x61, 0x18, 0x07, 0x78, 0x64, 0x30, 0x27],\n",
" [0x22, 0x21, 0x1E, 0x06, 0xF0, 0x76, 0x08, 0x28],\n",
" [0x02, 0x01, 0x06, 0x00, 0xF0, 0xF2, 0x03, 0xF5],\n",
" [0x21, 0x61, 0x1D, 0x07, 0x82, 0x81, 0x16, 0x07],\n",
" [0x23, 0x21, 0x1A, 0x17, 0xCF, 0x72, 0x25, 0x17],\n",
" [0x15, 0x11, 0x25, 0x00, 0x4F, 0x71, 0x00, 0x11],\n",
" [0x85, 0x01, 0x12, 0x0F, 0x99, 0xA2, 0x40, 0x02],\n",
" [0x07, 0xC1, 0x69, 0x07, 0xF3, 0xF5, 0xA7, 0x12],\n",
" [0x71, 0x23, 0x0D, 0x06, 0x67, 0x75, 0x23, 0x16],\n",
" [0x01, 0x02, 0xD3, 0x05, 0xA3, 0x92, 0xF7, 0x52],\n",
" [0x61, 0x63, 0x0C, 0x00, 0x94, 0xAF, 0x34, 0x06],\n",
" [0x21, 0x72, 0x0D, 0x00, 0xC1, 0xA0, 0x54, 0x16]\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def reg_to_patch(reg):\n",
" tl = reg[2] & 0x3F\n",
" dc = (reg[3] & 0x10) >> 4\n",
" dm = (reg[3] & 0x08) >> 3\n",
" fb = reg[3] & 0x07\n",
" am = [(reg[0] & 0x80) >> 7, (reg[1] & 0x80) >> 7]\n",
" vib = [(reg[0] & 0x40) >> 6, (reg[1] & 0x40) >> 6]\n",
" et = [(reg[0] & 0x20) >> 5, (reg[1] & 0x20) >> 5]\n",
" ksr = [(reg[0] & 0x10) >> 4, (reg[1] & 0x10) >> 4]\n",
" multi = [(reg[0] & 0x0F), (reg[1] & 0x0F)]\n",
" ksl = [(reg[2] & 0xC0) >> 6, (reg[3] & 0xC0) >> 6]\n",
" \n",
" ar = [(reg[4] & 0xF0) >> 4, (reg[5] & 0xF0) >> 4]\n",
" dr = [(reg[4] & 0x0F), (reg[5] & 0x0F)]\n",
" sr = [(reg[6] & 0xF0) >> 4, (reg[7] & 0xF0) >> 4]\n",
" rr = [(reg[6] & 0x0F), (reg[7] & 0x0F)]\n",
" \n",
" \n",
" return OPLLPatch(tl, dc, dm, fb, am, vib, et, ksr, multi, ksl, ar, dr, sr, rr)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"def compare(p1, p2):\n",
" params = []\n",
" for i, j in zip(p1, p2):\n",
" if isinstance(i, list):\n",
" params.append([i[0] - j[0], i[1] - j[1]])\n",
" else:\n",
" params.append(i - j)\n",
" return OPLLPatch(*params)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"approx = []\n",
"for p in kevtris:\n",
" approx.append(reg_to_patch(p))"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"comparisons = []\n",
"for v, a in zip(VRC7, approx):\n",
" comparisons.append(compare(v, a))"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Patch #1: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[3, 0], dr=[0, 0], sl=[0, 0], rr=[0, 0])\n",
"\n",
"Patch #2: OPLLPatch(tl=1, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 2], dr=[0, 0], sl=[0, 0], rr=[0, 0])\n",
"\n",
"Patch #3: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[-1, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 2], dr=[0, -8], sl=[0, 1], rr=[-2, 0])\n",
"\n",
"Patch #4: OPLLPatch(tl=-12, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[3, 0], dr=[0, 0], sl=[3, 0], rr=[1, 0])\n",
"\n",
"Patch #5: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[1, 0], multi=[0, 0], ksl=[0, 0], ar=[-1, 0], dr=[1, 0], sl=[0, 0], rr=[-7, 0])\n",
"\n",
"Patch #6: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[-5, -1], dr=[3, 0], sl=[15, 0], rr=[1, -1])\n",
"\n",
"Patch #7: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 0], dr=[0, 0], sl=[0, 0], rr=[-5, 0])\n",
"\n",
"Patch #8: OPLLPatch(tl=8, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[-2, 0], dr=[-13, 0], sl=[-2, 0], rr=[-4, 0])\n",
"\n",
"Patch #9: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[1, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 0], dr=[-15, 2], sl=[7, -1], rr=[2, 0])\n",
"\n",
"Patch #10: OPLLPatch(tl=-3, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[1, 0], ksr=[1, 0], multi=[0, 0], ksl=[0, 0], ar=[1, 0], dr=[-1, 3], sl=[1, 0], rr=[1, 0])\n",
"\n",
"Patch #11: OPLLPatch(tl=-5, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[1, 0], multi=[0, 0], ksl=[-1, 0], ar=[0, 0], dr=[5, 3], sl=[-8, 0], rr=[-5, 0])\n",
"\n",
"Patch #12: OPLLPatch(tl=4, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 0], dr=[-2, -1], sl=[-1, 0], rr=[5, 0])\n",
"\n",
"Patch #13: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[2, 0], dr=[6, 3], sl=[-15, -5], rr=[-4, 0])\n",
"\n",
"Patch #14: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 2], dr=[0, -15], sl=[0, 15], rr=[-1, 0])\n",
"\n",
"Patch #15: OPLLPatch(tl=0, dc=0, dm=0, fb=0, am=[0, 0], vib=[0, 0], et=[0, 0], ksr=[0, 0], multi=[0, 0], ksl=[0, 0], ar=[0, 3], dr=[0, 5], sl=[0, -1], rr=[2, 0])\n",
"\n"
]
}
],
"source": [
"for i, c in enumerate(comparisons):\n",
" print(\"Patch #{}: {}\\n\".format(i + 1, c))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment