{ "info": { "author": "ed", "author_email": "md_rbrb@ocv.me", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Operating System :: Microsoft :: Windows", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.0", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Games/Entertainment :: Side-Scrolling/Arcade Games" ], "description": "\nmultilanguage Rabi-Ribi display\n===============================\n\n\n* MIT-licensed, 2017/02/19, ed@irc.rizon.net\n* https://ocv.me/stuff/md_rbrb.png -- screenshot\n* https://ocv.me/stuff/md_rbrb.mp4 -- video\n* https://pypi.org/project/md_rbrb/ -- download\n\nusage\n=====\n\n\n* install ``mecab.exe`` with **UTF-8 dictionary charset**\\ : http://taku910.github.io/mecab/#win\n* open a terminal: ``WIN+R`` ``cmd``\n* install md_rbrb: ``pip install md_rbrb``\n* run md_rbrb: ``md_rbrb`` (or maybe ``python -m md_rbrb``\\ )\n* visit http://127.0.0.1:8086/\n\nif you are running md_rbrb from the source code directory, disregard all the above (except for the mecab part) and just run ``start-md_rbrb.bat``\n\nhow it works\n============\n\n\n* it attaches to rabiribi.exe and uses hardcoded memory addresses to read out the currently visible dialogue line from the process memory\n* on each new line it parses the game's dialogue file from disk and reads out the japanese and english variant of said line\n* an httpd offers a document which displays the current dialogue line and autorefreshes to load new lines\n\nmaintainers\n===========\n\nif there's a new version of rabi-ribi and this script has died, open up the following file for reference along with cheatengine: ``C:\\Program Files (x86)\\Steam\\steamapps\\common\\Rabi-Ribi\\localize\\event\\story_en.rbrb``\n\n\n* start a new game\n* tap past the first two lines of dialogue (\\ ``...`` and ``...?``\\ )\n* stop at the 3rd line (\\ ``Yawn...``\\ )\n* CTRL-F the dialogue line in story_en.rbrb, you'll see its block ID right above the search result\n* do a 4byte search for that ID (\\ ``10000``\\ ), you'll see a couple results\n* skip 3 lines ahead until just after the cutscene, then stop at the 1st line (\\ ``Wh-What is this place?``\\ )\n* do another search for the new ID (\\ ``10001``\\ ), now there's only two search results\n* add the 1st result to the code list by doubleclicking it, then rightclick it in the codelist and ``Pointerscan for this address``\\ , use default settings, hit OK and Yes (it'll only take like 44kB)\n* the top result will have \"\\ **Offset 0**\\ \" = ``0`` and the other offsets are blank, you just found ``ADR_BLOCK_ID`` which is the hexadecimal value under \"\\ **Base Address**\\ \"\n* without advancing the dialogue, start a new 4byte search for 0, then move one line ahead ingame and search for 1, then one more line and search for 2 etc until there's just one result with green text\n* pointerscan that result and grab the first result with \"\\ **Offset 0**\\ \" = ``0``\\ , that is ``ADR_BLOCK_POS``\n\nnote that if the dialogue box goes away for a camera pan or whatever then you have to start over since that makes it go back to 0, so do this with a dialogue scene that goes on for a bit uninterrupted\n\nchangelog\n=========\n\n\n* 2017/03/24: v1.1 for Rabi-Ribi v1.88\n* 2017/02/19: v1.0 for Rabi-Ribi v1.75\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/9001/md_rbrb", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "md_rbrb", "package_url": "https://pypi.org/project/md_rbrb/", "platform": "", "project_url": "https://pypi.org/project/md_rbrb/", "project_urls": { "Homepage": "https://github.com/9001/md_rbrb" }, "release_url": "https://pypi.org/project/md_rbrb/1.1.1/", "requires_dist": null, "requires_python": "", "summary": "multilanguage Rabi-Ribi display", "version": "1.1.1" }, "last_serial": 3702287, "releases": { "1.1.0": [ { "comment_text": "", "digests": { "md5": "057e04049626fc56b173d2ee0eddb52d", "sha256": "85d6010e36913f95b2499d0959322dde8857c480bb4dede18d0449012a6d90cd" }, "downloads": -1, "filename": "md_rbrb-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "057e04049626fc56b173d2ee0eddb52d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15136, "upload_time": "2018-03-24T20:03:58", "url": "https://files.pythonhosted.org/packages/86/21/07f085880505db4206a231aca6d0044b5a207512bf32c44783c3bcf9c781/md_rbrb-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a98f035c868fc3bf239bf98604d2789", "sha256": "8c41de76ea3a2b5aff54db43be3f3a5f7dc779a8bb9cdab24fdd9750b08ef022" }, "downloads": -1, "filename": "md_rbrb-1.1.0.tar.gz", "has_sig": false, "md5_digest": "7a98f035c868fc3bf239bf98604d2789", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10509, "upload_time": "2018-03-24T20:03:56", "url": "https://files.pythonhosted.org/packages/6b/69/8becc16cbbbbae7a11c61716fd5c4905dc91550d5a1f216f1cbf39aa4c0f/md_rbrb-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "6d9f46ea4d85fd7f818396094d0dffed", "sha256": "b4af0f9227f539899bc59afa435caa539e6c28cbfc4852af8a859edfd1b3480c" }, "downloads": -1, "filename": "md_rbrb-1.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "6d9f46ea4d85fd7f818396094d0dffed", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15297, "upload_time": "2018-03-24T20:33:16", "url": "https://files.pythonhosted.org/packages/f0/62/51dfce6b91b3b6c440a33fdbc4471cbfe40991f055727cf8721690af9471/md_rbrb-1.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2441be0fe19b8bff9194ad84bbcbb6c", "sha256": "5c69715a5c4dcf79a878d9d2760f0e84f6a33621542ad2da0b3568a879d699d8" }, "downloads": -1, "filename": "md_rbrb-1.1.1.tar.gz", "has_sig": false, "md5_digest": "a2441be0fe19b8bff9194ad84bbcbb6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10579, "upload_time": "2018-03-24T20:33:14", "url": "https://files.pythonhosted.org/packages/0c/18/63fc5c7ab55e67ad00e782fc77be24bfa3ba939780d9b4227b1458275390/md_rbrb-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6d9f46ea4d85fd7f818396094d0dffed", "sha256": "b4af0f9227f539899bc59afa435caa539e6c28cbfc4852af8a859edfd1b3480c" }, "downloads": -1, "filename": "md_rbrb-1.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "6d9f46ea4d85fd7f818396094d0dffed", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15297, "upload_time": "2018-03-24T20:33:16", "url": "https://files.pythonhosted.org/packages/f0/62/51dfce6b91b3b6c440a33fdbc4471cbfe40991f055727cf8721690af9471/md_rbrb-1.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2441be0fe19b8bff9194ad84bbcbb6c", "sha256": "5c69715a5c4dcf79a878d9d2760f0e84f6a33621542ad2da0b3568a879d699d8" }, "downloads": -1, "filename": "md_rbrb-1.1.1.tar.gz", "has_sig": false, "md5_digest": "a2441be0fe19b8bff9194ad84bbcbb6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10579, "upload_time": "2018-03-24T20:33:14", "url": "https://files.pythonhosted.org/packages/0c/18/63fc5c7ab55e67ad00e782fc77be24bfa3ba939780d9b4227b1458275390/md_rbrb-1.1.1.tar.gz" } ] }